recursion!

master
Dustin Swan 5 days ago
parent a85203bc94
commit aace8a5a77
Signed by: dustinswan
GPG Key ID: 30D46587E2100467

@ -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…
Cancel
Save