Begin simplifying evalArgs.
Chris Pressey
5 years ago
27 | 27 | |
28 | 28 | -- formals actuals origActuals env i wierd-cc |
29 | 29 | evalArgs :: [Expr] -> [Expr] -> [Expr] -> Env Expr -> IEnv Expr -> (Env Expr -> Expr) -> Expr |
30 | evalArgs formals actuals origActuals env i cc = | |
31 | evalArgs' formals actuals origActuals env i cc | |
32 | where | |
33 | evalArgs' [] [] _ _ _ cc = | |
34 | cc Env.empty | |
35 | evalArgs' ((Symbol formal):formals) (actual:actuals) origActuals env i cc = | |
36 | eval i env actual (\value -> | |
37 | evalArgs' formals actuals origActuals env i (\nenv -> | |
38 | cc $ Env.insert formal value nenv)) | |
39 | evalArgs' _ _ origActuals _ i cc = | |
40 | raise i $ errMsg "illegal-arguments" $ List origActuals | |
30 | evalArgs [] [] _ _ _ cc = | |
31 | cc Env.empty | |
32 | evalArgs ((Symbol formal):formals) (actual:actuals) origActuals env i cc = | |
33 | eval i env actual (\value -> | |
34 | evalArgs formals actuals origActuals env i (\nenv -> | |
35 | cc $ Env.insert formal value nenv)) | |
36 | evalArgs _ _ origActuals _ i cc = | |
37 | raise i $ errMsg "illegal-arguments" $ List origActuals | |
41 | 38 | |
42 | 39 | -- formals actuals origActuals envExpr i wierd-cc |
43 | 40 | evalArgsExpr :: [Expr] -> [Expr] -> [Expr] -> Expr -> IEnv Expr -> (Env Expr -> Expr) -> Expr |
46 | 43 | Right env -> |
47 | 44 | evalArgs formals actuals origActuals env i cc |
48 | 45 | Left (msg, value) -> |
49 | raise i (errMsg msg value) | |
46 | raise i $ errMsg msg value | |
50 | 47 | |
51 | 48 | evalTwoNumbers :: (Int32 -> Int32 -> Expr) -> Evaluable |
52 | 49 | evalTwoNumbers fn i env (List [xexpr, yexpr]) cc = |