git @ Cat's Eye Technologies Robin / c563be5
Factor out common code to processRobin. Chris Pressey 5 years ago
1 changed file(s) with 16 addition(s) and 17 deletion(s). Raw diff Collapse all Expand all
1919
2020
2121 processArgs args env = processArgs' args env [] [] where
22 processArgs' [] env reactors results = return (env, reactors, results)
22 processArgs' [] env reactors results =
23 return (env, reactors, results)
2324 processArgs' ("eval":filename:rest) env reactors results = do
2425 exprText <- readFile filename
25 case parseExpr exprText of
26 Right expr -> do
27 let topExprs = [List [Symbol "display", expr]]
28 (env', reactors', results') <- return $ TopLevel.collect topExprs env reactors results
29 processArgs' rest env' reactors' results'
30 Left problem -> do
31 hPutStr stderr (show problem)
32 exitWith $ ExitFailure 1
26 (env', reactors', results') <- processRobin (parseExpr exprText) (\expr -> [List [Symbol "display", expr]]) env reactors results
27 processArgs' rest env' reactors' results'
3328 processArgs' (filename:rest) env reactors results = do
34 program <- readFile filename
35 case parseToplevel program of
36 Right topExprs -> do
37 (env', reactors', results') <- return $ TopLevel.collect topExprs env reactors results
38 processArgs' rest env' reactors' results'
39 Left problem -> do
40 hPutStr stderr (show problem)
41 exitWith $ ExitFailure 1
29 toplevelText <- readFile filename
30 (env', reactors', results') <- processRobin (parseToplevel toplevelText) id env reactors results
31 processArgs' rest env' reactors' results'
32
33
34 processRobin parsed convertToToplevel env reactors results =
35 case parsed of
36 Right expr -> do
37 return $ TopLevel.collect (convertToToplevel expr) env reactors results
38 Left problem -> do
39 hPutStr stderr (show problem)
40 exitWith $ ExitFailure 1
4241
4342
4443 writeResults [] = return ()