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': { case 'let': {
const val = evaluate(ast.value, env); const newEnv = new Map(env);
const newEnv = new Map(env).set(ast.name, val);
const val = evaluate(ast.value, newEnv);
newEnv.set(ast.name, val);
return evaluate(ast.body, newEnv); return evaluate(ast.body, newEnv);
} }

@ -31,3 +31,9 @@ e('"abc" & "def"');
e('n = 5; n | 5 \\ "five" | _ \\ "other"'); e('n = 5; n | 5 \\ "five" | _ \\ "other"');
e('list = [1, 2, 3]; list | [x, y, z] \\ x + y + z'); 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('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