recursion!
This commit is contained in:
parent
a85203bc94
commit
aace8a5a77
2 changed files with 12 additions and 2 deletions
|
|
@ -69,8 +69,12 @@ export function evaluate(ast: AST, env: Env): Value {
|
|||
};
|
||||
|
||||
case 'let': {
|
||||
const val = evaluate(ast.value, env);
|
||||
const newEnv = new Map(env).set(ast.name, val);
|
||||
const newEnv = new Map(env);
|
||||
|
||||
const val = evaluate(ast.value, newEnv);
|
||||
|
||||
newEnv.set(ast.name, val);
|
||||
|
||||
return evaluate(ast.body, newEnv);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -31,3 +31,9 @@ e('"abc" & "def"');
|
|||
e('n = 5; n | 5 \\ "five" | _ \\ "other"');
|
||||
e('list = [1, 2, 3]; list | [x, y, z] \\ x + y + z');
|
||||
e('point = {x = 5, y = 10}; point | {x = px, y = py} \\ px + py');
|
||||
|
||||
e(`factorial = n \\ n
|
||||
| 0 \\ 1
|
||||
| n \\ n * factorial (n - 1);
|
||||
|
||||
factorial 5`)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue