Skip to content

Commit d1bfef1

Browse files
committed
Do not redefine common combinators
1 parent 7955818 commit d1bfef1

File tree

5 files changed

+7
-67
lines changed

5 files changed

+7
-67
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ all: compile.js
33
node lambda -h
44
node lambda -ce "S hello bye world"
55
node lambda -d samples/debug.mlc
6-
node lambda -pt samples/fact.mlc
6+
node lambda -cpt samples/fact.mlc
77

88
compile.js: grammar.jison
99
npm install jison@0.4.15

samples/exp.mlc

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1 @@
1-
I = x: x;
2-
C2 = f, x: f (f x);
3-
C10 = f, x: f (f (f (f (f (f (f (f (f (f x)))))))));
4-
51
C10 C2 C2 I I

samples/fact.mlc

Lines changed: 2 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,3 @@
1-
I = x: x;
2-
K = x, y: x;
3-
S = x, y, z: x z (y z);
1+
FACT = Y (self, n: (ZERO n) C1 (MULT n (self (PRED n))));
42

5-
T = K;
6-
F = x, y: y;
7-
AND = p, q: p q F;
8-
OR = p, q: p T q;
9-
NOT = p: (a, b: p b a);
10-
11-
C0 = f, x: x;
12-
C1 = f, x: f x;
13-
C2 = f, x: f (f x);
14-
C3 = f, x: f (f (f x));
15-
SUCC = n: (f, x: f (n f x));
16-
PLUS = m, n: (f, x: m f (n f x));
17-
MULT = m, n: (f: m (n f));
18-
EXP = m, n: n m;
19-
PRED = n: (f, x: n (g, h: h (g f)) (K x) I);
20-
MINUS = m, n: n PRED m;
21-
ZERO = n: n (K F) T;
22-
23-
A = self, f: f (self self f);
24-
Y = A A;
25-
FACTR = self, n: (ZERO n) C1 (MULT n (self (PRED n)));
26-
FACT = Y FACTR;
27-
28-
C24 = FACT (PLUS C2 C2);
29-
C27 = EXP C3 C3;
30-
MINUS C27 C24
3+
MINUS (C3 C3) (FACT C4)

samples/helper.txt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ I = x: x;
22
K = x, y: x;
33
S = x, y, z: x z (y z);
44
T = K;
5-
F = x, y: y;
5+
F = K I;
66
AND = p, q: p q F;
77
OR = p, q: p T q;
88
NOT = p: (a, b: p b a);
@@ -24,5 +24,4 @@ EXP = m, n: n m;
2424
PRED = n: (f, x: n (g, h: h (g f)) (K x) I);
2525
MINUS = m, n: n PRED m;
2626
ZERO = n: n (K F) T;
27-
A = self, f: f (self self f);
28-
Y = A A;
27+
Y = (a: a a) (self, f: f (self self f));

samples/larger.mlc

Lines changed: 2 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,3 @@
1-
I = x: x;
2-
K = x, y: x;
3-
S = x, y, z: x z (y z);
1+
FACT = Y (self, n: (ZERO n) C1 (MULT n (self (PRED n))));
42

5-
T = K;
6-
F = x, y: y;
7-
AND = p, q: p q F;
8-
OR = p, q: p T q;
9-
NOT = p: (a, b: p b a);
10-
11-
C0 = f, x: x;
12-
C1 = f, x: f x;
13-
C2 = f, x: f (f x);
14-
C3 = f, x: f (f (f x));
15-
SUCC = n: (f, x: f (n f x));
16-
PLUS = m, n: (f, x: m f (n f x));
17-
MULT = m, n: (f: m (n f));
18-
EXP = m, n: n m;
19-
PRED = n: (f, x: n (g, h: h (g f)) (K x) I);
20-
MINUS = m, n: n PRED m;
21-
ZERO = n: n (K F) T;
22-
23-
A = self, f: f (self self f);
24-
Y = A A;
25-
FACTR = self, n: (ZERO n) C1 (MULT n (self (PRED n)));
26-
FACT = Y FACTR;
27-
28-
C5 = PLUS C2 C3;
29-
C125 = C3 C5;
30-
C120 = FACT C5;
31-
MINUS C125 C120
3+
MINUS (C3 C5) (FACT C5)

0 commit comments

Comments
 (0)