|
@@ -10,7 +10,7 @@ module.exports = class Evaluator {
|
10
|
10
|
let evaluatedTree = []
|
11
|
11
|
|
12
|
12
|
tree.forEach(node => {
|
13
|
|
- let evaluatedNode = this.evalNode(node)
|
|
13
|
+ let evaluatedNode = this.evalNode(node, env)
|
14
|
14
|
|
15
|
15
|
if (evaluatedNode) {
|
16
|
16
|
if (evaluatedNode.constructor === OsloError) {
|
|
@@ -63,7 +63,7 @@ module.exports = class Evaluator {
|
63
|
63
|
return this.evalNode(
|
64
|
64
|
new AST.Application({
|
65
|
65
|
function: env.get(node.function),
|
66
|
|
- args: node.args,
|
|
66
|
+ args: this.eval(node.args, env),
|
67
|
67
|
}),
|
68
|
68
|
env,
|
69
|
69
|
)
|
|
@@ -76,9 +76,7 @@ module.exports = class Evaluator {
|
76
|
76
|
|
77
|
77
|
return this.evalNode(node.function.body, innerEnv)
|
78
|
78
|
case Function:
|
79
|
|
- let args = node.args.map(arg => {
|
80
|
|
- return this.evalNode(arg, env)
|
81
|
|
- })
|
|
79
|
+ let args = this.eval(node.args, env)
|
82
|
80
|
args.unshift(this)
|
83
|
81
|
return node.function.call(...args)
|
84
|
82
|
}
|