diff options
Diffstat (limited to 'js/types.js')
| -rw-r--r-- | js/types.js | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/js/types.js b/js/types.js index 6d7de0f..889e154 100644 --- a/js/types.js +++ b/js/types.js @@ -100,14 +100,14 @@ function _symbol_Q(obj) { return obj instanceof Symbol; } // Functions -function _function(Eval, Env, exp, env, params) { - var f = function() { - // TODO: figure out why this throws with 'and' macro - //throw new Error("Attempt to invoke mal function directly"); - return Eval(exp, new Env(env, params, arguments)); +function _function(Eval, Env, ast, env, params) { + var fn = function() { + return Eval(ast, new Env(env, params, arguments)); }; - f.__meta__ = {exp: exp, env: env, params: params}; - return f; + fn.__meta__ = null; + fn.__ast__ = ast; + fn.__gen_env__ = function(args) { return new Env(env, params, args); }; + return fn; } function _function_Q(obj) { return typeof obj == "function"; } Function.prototype.clone = function() { |
