X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=lambda_evaluator.mdwn;h=3fba8fadf354258c694900734a4fd00dbc0ebdab;hp=2c6086bf3502cc7f67e452b8c9473d30fcb3c60a;hb=9a92978d1e62e3abd8e23b5b243d04d429dfaba5;hpb=6f288f5b1aaa1d42e7f98682e74143fc66e1b53c diff --git a/lambda_evaluator.mdwn b/lambda_evaluator.mdwn index 2c6086bf..3fba8fad 100644 --- a/lambda_evaluator.mdwn +++ b/lambda_evaluator.mdwn @@ -22,7 +22,7 @@ Blank lines are fine. *Abbreviations*: In an earlier version, you couldn't use abbreviations. `\x y. y x x` had to be written `(\x (\y ((y x) x)))`. We've upgraded the parser though, so now it should be able to understand any lambda term that you can. -*Constants*: (NOT YET IMPLEMENTED!) The combinators `S`, `K`, `I`, `C`, `B`, `W`, and `T` are pre-defined to their standard values. Also, integers will automatically be converted to Church numerals. (`0` is `\s z. z`, `1` is `\s z. s z`, and so on.) +*Constants*: The combinators `S`, `K`, `I`, `C`, `B`, `W`, and `T` are pre-defined to their standard values. Also, integers will automatically be converted to Church numerals. (`0` is `\s z. z`, `1` is `\s z. s z`, and so on.) @@ -38,6 +38,7 @@ let and = \l r. l r false in ) +do eta-reductions too @@ -83,10 +84,10 @@ Object.prototype.error = function (message, t) { tree = parse(source); // string = JSON.stringify(tree, ['key', 'name', 'message', 'value', 'arity', 'first', 'second', 'third', 'fourth'], 4); expr = tree.handler(); - string = JSON.stringify(expr, ['key', 'name', 'message', 'value', 'arity', 'first', 'second', 'tag', 'variable', 'left', 'right', 'bound', 'body' ], 4); + // 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(); + string = ''; + string = string + reduce(expr, document.getElementById('ETA').value, false).to_string(); } catch (e) { string = JSON.stringify(e, ['name', 'message', 'from', 'to', 'key', 'value', 'arity', 'first', 'second', 'third', 'fourth'], 4);