tweak lambda evaluator
authorJim Pryor <profjim@jimpryor.net>
Thu, 23 Sep 2010 09:58:31 +0000 (05:58 -0400)
committerJim Pryor <profjim@jimpryor.net>
Thu, 23 Sep 2010 09:58:31 +0000 (05:58 -0400)
Signed-off-by: Jim Pryor <profjim@jimpryor.net>
code/lambda.js
code/parse.js

index f87b355..c0dbb0f 100644 (file)
@@ -410,7 +410,39 @@ try {
     }
 } catch (e) {}
 
     }
 } catch (e) {}
 
-
+/*
+let true = K in
+let false = \x y. y in
+let and = \l r. l r false in
+let or = \l r. l true r in
+let pair = \u v f. f u v in
+let triple = \u v w f. f u v w in
+let succ = \n s z. s (n s z) in
+let pred = \n s z. n (\u v. v (u s)) (K z) I in
+let ifzero = \n. n (\u v. v (u succ)) (K 0) (\n withp whenz. withp n) in
+let add = \m n. n succ m in
+let mul = \m n. n (\z. add m z) 0 in
+let mul = \m n s. m (n s) in
+let sub = (\mzero msucc mtail. \m n. n mtail (m msucc mzero) true) (pair 0 I) (\d. d (\a b. pair (succ a) (K d))) (\d. d false d) in
+let min = \m n. sub m (sub m n) in
+let max = \m n. add n (sub m n) in
+let lt = (\mzero msucc mtail. \n m. n mtail (m msucc mzero) true (\x. true) false) (pair 0 I) (\d. d (\a b. pair (succ a) (K d))) (\d. d false d) in
+let leq = (\mzero msucc mtail. \m n. n mtail (m msucc mzero) true (\x. false) true) (pair 0 I) (\d. d (\a b. pair (succ a) (K d))) (\d. d false d) in
+let eq = (\mzero msucc mtail. \m n. n mtail (m msucc mzero) true (\x. false) true) (pair 0 (K (pair 1 I))) (\d. d (\a b. pair (succ a) (K d))) (\d. d false d) in
+let divmod = (\mzero msucc mtail. \n divisor.
+               (\dhead. n (mtail dhead) (\sel. dhead (sel 0 0)))
+              (divisor msucc mzero (\a b c. c x))
+              (\d m a b c. pair d m) )
+          (triple succ (K 0) I)
+          (\d. triple I succ (K d))
+          (\dhead d. d (\dz mz df mf drest sel. drest dhead (sel (df dz) (mf mz)))) in
+let div = \n d. divmod n d true in
+let mod = \n d. divmod n d false in
+let Y = \f. (\y. f(y y)) (\y. f(y y)) in
+let Z = (\u f. f(u u f)) (\u f. f(u u f)) in
+let fact = \y. y (\f n. ifzero n (\p. mul n (f p)) 1) in
+fact Z 3
+*/
 
 
 
 
 
 
index 6882d79..4d2bc8d 100644 (file)
@@ -4,6 +4,9 @@
 //      http://javascript.crockford.com/tdop/index.html
 //      Douglas Crockford 2010-06-26
 
 //      http://javascript.crockford.com/tdop/index.html
 //      Douglas Crockford 2010-06-26
 
+//      See also http://effbot.org/zone/simple-top-down-parsing.htm
+
+
 /*jslint onevar: false
  */
 
 /*jslint onevar: false
  */
 
@@ -65,6 +68,7 @@ var make_parse = function () {
         }
     };
 
         }
     };
 
+       /*
        try {
                if (console && console.debug) {
                        function print() {
        try {
                if (console && console.debug) {
                        function print() {
@@ -72,6 +76,7 @@ var make_parse = function () {
                        }
                }
        } catch (e) {}
                        }
                }
        } catch (e) {}
+       */
 
     var symbol = function (id) {
         var s = symbol_table[id];
 
     var symbol = function (id) {
         var s = symbol_table[id];