expand calc improvements
[lambda.git] / code / lambda.js
index 89bd21b..83ae7c4 100644 (file)
@@ -293,16 +293,16 @@ function Lambda_lam(variable, body) {
         return new Db_lam(this.body.debruijn(new_seq));
     };
     this.to_string = function (as_atom) {
-        var base = "\\" + this.to_string_funct();
+        var base = "\\" + this.to_dotted();
         if (as_atom) {
             return "(" + base + ")";
         } else {
             return base;
         }
     };
-    this.to_string_funct = function () {
-        if (this.body.to_string_funct) {
-            return this.bound.to_string() + " " + this.body.to_string_funct();
+    this.to_dotted = function () {
+        if (this.body.to_dotted) {
+            return this.bound.to_string() + " " + this.body.to_dotted();
         } else {
             return this.bound.to_string() + ". " + this.body.to_string();
         }
@@ -423,6 +423,7 @@ function reduce(expr, eta, cbv) {
         return expr.eval_cbv(cbv > 1);
     } else {
         // return expr.eval_loop([], eta);
+               // using trampoline to reduce call stack overflows
                var to_eval = expr, res = [[], eta];
                while (to_eval !== null) {
                        res = to_eval.eval_loop.apply(to_eval, res);