fix tattoo
[lambda.git] / lambda_evaluator.mdwn
index d46fc78..4a5b9dc 100644 (file)
@@ -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.)  
 
 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
 )
 </textarea>
 <input id="PARSE" value="Normalize" type="button">
 )
 </textarea>
 <input id="PARSE" value="Normalize" type="button">
+<input id="ETA" type="checkbox">do eta-reductions too
 <noscript><p>You may not see it because you have JavaScript turned off. Uffff!</p></noscript>
 <script src="/code/lambda.js"></script>
 <script src="/code/tokens.js"></script>
 <noscript><p>You may not see it because you have JavaScript turned off. Uffff!</p></noscript>
 <script src="/code/lambda.js"></script>
 <script src="/code/tokens.js"></script>
@@ -78,7 +76,7 @@ Object.prototype.error = function (message, t) {
     var parse = make_parse();
 
     function go(source) {
     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);
         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 = 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);
         } catch (e) {
             string = JSON.stringify(e, ['name', 'message', 'from', 'to', 'key',
                     'value', 'arity', 'first', 'second', 'third', 'fourth'], 4);