lambdas and application now in AST, types and interpreter
This commit is contained in:
parent
d60e5aa29f
commit
920151f49c
4 changed files with 102 additions and 4 deletions
44
src/main.ts
44
src/main.ts
|
|
@ -28,3 +28,47 @@ const env: Env = new Map();
|
|||
const res = evaluate(ast, env);
|
||||
|
||||
console.log(res);
|
||||
|
||||
const ast2: AST = {
|
||||
kind: 'let',
|
||||
name: 'add',
|
||||
value: {
|
||||
kind: 'lambda',
|
||||
params: ['x', 'y'],
|
||||
body: {
|
||||
kind: 'binaryop',
|
||||
operator: '+',
|
||||
left: {
|
||||
kind: 'variable',
|
||||
name: 'x',
|
||||
},
|
||||
right: {
|
||||
kind: 'variable',
|
||||
name: 'y',
|
||||
}
|
||||
}
|
||||
},
|
||||
body: {
|
||||
kind: 'apply',
|
||||
func: {
|
||||
kind: 'variable',
|
||||
name: 'add'
|
||||
},
|
||||
args: [
|
||||
{
|
||||
kind: 'literal',
|
||||
value: { kind: 'int', value: 2 }
|
||||
},
|
||||
{
|
||||
kind: 'literal',
|
||||
value: { kind: 'int', value: 3 }
|
||||
},
|
||||
]
|
||||
}
|
||||
};
|
||||
|
||||
const env2: Env = new Map();
|
||||
|
||||
const res2 = evaluate(ast2, env2);
|
||||
|
||||
console.log(res2);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue