File tree 2 files changed +12
-24
lines changed
2 files changed +12
-24
lines changed Original file line number Diff line number Diff line change @@ -34,10 +34,17 @@ import List
34
34
import IO hiding (try )
35
35
import Numeric
36
36
import Ratio
37
- import System.Environment
38
37
38
+ -- Evaluate a string containing Scheme code
39
+ evalString :: Env -> String -> IO String
40
+ evalString env expr = runIOThrows $ liftM show $ (liftThrows $ readExpr expr) >>= macroEval env >>= eval env
39
41
40
- -- Eval section
42
+ -- Evaluate a string and print results to console
43
+ evalAndPrint :: Env -> String -> IO ()
44
+ evalAndPrint env expr = evalString env expr >>= putStrLn
45
+
46
+ -- Core eval section
47
+ -- Note: do not call directly if you want Macro support; instead, call macroEval first.
41
48
eval :: Env -> LispVal -> IOThrowsError LispVal
42
49
eval env val@ (Nil _) = return val
43
50
eval env val@ (String _) = return val
Original file line number Diff line number Diff line change 11
11
- -}
12
12
13
13
module Main where
14
- import Scheme.Core
15
- import Scheme.Macro
16
- import Scheme.Numerical
17
- import Scheme.Parser
18
- import Scheme.Types
19
- import Scheme.Variables
20
- import Complex
21
- import Control.Monad
14
+ import Scheme.Core -- Scheme Interpreter
15
+ import Scheme.Types -- Scheme data types
16
+ import Scheme.Variables -- Scheme variable operations
22
17
import Control.Monad.Error
23
- import Char
24
- import Data.Array
25
- import Data.IORef
26
- import qualified Data.Map
27
- import Maybe
28
- import List
29
18
import IO hiding (try )
30
- import Numeric
31
- import Ratio
32
19
import System.Environment
33
20
import System.Console.Haskeline
34
21
@@ -42,12 +29,6 @@ main = do args <- getArgs
42
29
flushStr :: String -> IO ()
43
30
flushStr str = putStr str >> hFlush stdout
44
31
45
- evalString :: Env -> String -> IO String
46
- evalString env expr = runIOThrows $ liftM show $ (liftThrows $ readExpr expr) >>= macroEval env >>= eval env
47
-
48
- evalAndPrint :: Env -> String -> IO ()
49
- evalAndPrint env expr = evalString env expr >>= putStrLn
50
-
51
32
runOne :: [String ] -> IO ()
52
33
runOne args = do
53
34
env <- primitiveBindings >>= flip bindVars [((varNamespace, " args" ), List $ map String $ drop 1 args)]
You can’t perform that action at this time.
0 commit comments