X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=lambda_evaluator.mdwn;h=99aff2521d32ccdb527ff4799c06019fe7523a02;hp=180757c15323df6665c0b7be8d2a23c196ecc95c;hb=6d92118cd57ffe6ff3314c99f61ae98d5e490a32;hpb=4cf8f3d9e4dd738618941cfce954d705496db973 diff --git a/lambda_evaluator.mdwn b/lambda_evaluator.mdwn index 180757c1..99aff252 100644 --- a/lambda_evaluator.mdwn +++ b/lambda_evaluator.mdwn @@ -78,12 +78,15 @@ Object.prototype.error = function (message, t) { var parse = make_parse(); function go(source) { - var string, tree; + var string, tree, expr; try { tree = parse(source); -// string = JSON.stringify(tree, ['key', 'name', 'message', 'value', 'arity', 'first', 'second', 'third', 'fourth'], 4); -// string = JSON.stringify(tree.handler(), ['key', 'name', 'message', 'value', 'arity', 'first', 'second', 'tag', 'variable', 'left', 'right', 'bound', 'body' ], 4); - string = tree.handler().to_string(); + // string = JSON.stringify(tree, ['key', 'name', 'message', 'value', 'arity', 'first', 'second', 'third', 'fourth'], 4); + // string = JSON.stringify(tree.handler(), ['key', 'name', 'message', 'value', 'arity', 'first', 'second', 'tag', 'variable', 'left', 'right', 'bound', 'body' ], 4); + expr = tree.handler(); + // string = expr.to_string() + "\n\n~~>\n\n"; + string = ''; + string = string + reduce(expr, false, false).to_string(); } catch (e) { string = JSON.stringify(e, ['name', 'message', 'from', 'to', 'key', 'value', 'arity', 'first', 'second', 'third', 'fourth'], 4); @@ -119,5 +122,4 @@ The code is based on: Improvements we hope to add soon: the ability to reduce Combinatory Logic combinators and report the result as combinators, rather than in lambda forms. -For these assignments, you'll probably want to use a "lambda calculator" to check your work. This accepts any grammatical lambda expression and reduces it to normal form, when possible. See our [lambda-let page](/lambda-let.html),