Skip to content

Commit 370e95a

Browse files
author
Filippo Costa
committed
The parser is missing
1 parent 32c5ab0 commit 370e95a

File tree

1 file changed

+39
-33
lines changed

1 file changed

+39
-33
lines changed

lambda.lambda

+39-33
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,51 @@
1-
/** Style conventions
2-
* -----------------
3-
*
4-
* t ::=
5-
* - x
6-
* // Variable
7-
* - (x. t)
8-
* // Abstraction
9-
* - (t t)
10-
* // Application
11-
*/
1+
$ID: (x => x)
2+
$Y-COMBINATOR: (f => (x => f (x x)) (x => f (x x)))
123

134

14-
// Combinators
15-
ID: (x. x)
16-
CLONE: (x. x x)
17-
FORK-BOMB: (CLONE CLONE CLONE)
5+
$TUPLE: (a => b => f => f a b)
186

7+
$_1: (t => t $FALSE)
8+
$_2: (t => t $TRUE)
199

20-
// Algebraic data structures
21-
N-TUPLE: (x. ID x)
2210

23-
0-TUPLE: UNIT: ID
24-
1-TUPLE: (N-TUPLE 0-TUPLE)
25-
2-TUPLE: (N-TUPLE 1-TUPLE)
26-
3-TUPLE: (N-TUPLE 2-TUPLE)
11+
$TRUE: (x => y => x)
12+
$FALSE: (x => y => y)
2713

14+
$NOT: (p => p $FALSE $TRUE)
15+
$AND: (p => q => p q $FALSE)
16+
$OR: (p => q => p $TRUE q)
17+
$XOR: (p => q => p ($NOT q) q)
2818

29-
// Boolean logic
30-
TRUE: (xy. x)
31-
FALSE: (xy. y)
3219

33-
BOOL-NOT: (p. p FALSE TRUE)
34-
BOOL-AND: (pq. p q FALSE)
35-
BOOL-OR: (pq. p TRUE q)
36-
BOOL-XOR: (pq. p (NOT q) q)
20+
$INT-0: (f => x => x)
21+
$INT-1: ($SUCC $INT-0)
3722

23+
$SUCC: (n => f => x => f (n f x))
24+
$PLUS: (m => n => f => x => m f (n f x))
25+
$MULT: (m => n => f => m (n f))
3826

39-
// While
40-
FIXED-POINT-COMBINATOR: (f. (x. f (y. x x y)) (x. f (y. x x y)))
27+
$PRED: (n => f => x => n (g => h => h (g f)) (u => x) (u => u))
28+
$MINUS: (m => n => (n $PRED) m)
4129

42-
// Church numerals
43-
$ZERO: $FALSE
44-
$SUCCESSOR: (nsz. s (n s z))
4530

31+
$LAMBDA-VARIABLE: (a => b => c => a)
32+
$LAMBDA-VARIABLE-BUILDER: (n => $TUPLE $LAMBDA-VARIABLE n)
33+
34+
$LAMBDA-ABSTRACTION: (a => b => c => b)
35+
$LAMBDA-ABSTRACTION_BUILDER: (t => $TUPLE $LAMBDA-ABSTRACTION t)
36+
37+
$LAMBDA-APPLICATION: (a => b => c => c)
38+
$LAMBDA-APPLICATION-BUILDER: (x => y => $TUPLE $LAMBDA-APPLICATION ($TUPLE x y))
39+
40+
41+
$ONES: (f => n => p => p (f ($SUCC n)) ($LAMBDA-VARIABLE-BUILDER n))
42+
43+
44+
$REDUCE: (f => e => x => n => ($_1 e)
45+
# Variable
46+
(($EQ n ($_2 e)) x e)
47+
# Abstraction
48+
($LAMBDA-ABSTRACTION-BUILDER (f ($_2 e) x ($SUCC n)))
49+
# Application
50+
($LAMBDA-APPLICATION-BUILDER (f ($_1 ($_2 e)) x n) (f ($_2 ($_2 e)) x n))
51+
)

0 commit comments

Comments
 (0)