X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=lambda_evaluator.mdwn;h=4a5b9dc0ec39a17f14cf4c564148b40acc9252e5;hp=d46fc78577d3884c031e3f8446185283ddb3568a;hb=0a3e9b7715490e9edefb87397cad3210e790053f;hpb=eb2a14f6c7111e6c308b72dd0e8567e4296fcfe0 diff --git a/lambda_evaluator.mdwn b/lambda_evaluator.mdwn index d46fc785..4a5b9dc0 100644 --- a/lambda_evaluator.mdwn +++ b/lambda_evaluator.mdwn @@ -1,6 +1,3 @@ -Lambda Evaluator ----------------- - This lambda evaluator will allow you to write lambda terms and evaluate (that is, normalize) them, and inspect the results. (This won't work in Racket, because Racket doesn't even try to represent the internal structure of a function in a human-readable way.) @@ -38,6 +35,7 @@ let and = \l r. l r false in ) +do eta-reductions too @@ -78,7 +76,7 @@ Object.prototype.error = function (message, t) { var parse = make_parse(); function go(source) { - var string, tree, expr; + var string, tree, expr, eta; try { tree = parse(source); // string = JSON.stringify(tree, ['key', 'name', 'message', 'value', 'arity', 'first', 'second', 'third', 'fourth'], 4); @@ -86,7 +84,8 @@ Object.prototype.error = function (message, t) { // string = JSON.stringify(expr, ['key', 'name', 'message', 'value', 'arity', 'first', 'second', 'tag', 'variable', 'left', 'right', 'bound', 'body' ], 4); // string = expr.to_string() + "\n\n~~>\n\n"; string = ''; - string = string + reduce(expr, false, false).to_string(); + eta = document.getElementById('ETA').checked; + string = string + reduce(expr, eta, false).to_string(); } catch (e) { string = JSON.stringify(e, ['name', 'message', 'from', 'to', 'key', 'value', 'arity', 'first', 'second', 'third', 'fourth'], 4);