Skip to content

Commit a8ed588

Browse files
committed
up
1 parent eb0adfc commit a8ed588

File tree

4 files changed

+18
-13
lines changed

4 files changed

+18
-13
lines changed

TODO.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ be able to readback ackermann function
22
be able to check equivalence of ackermann function
33

44
[maybe] remove lazy evaluation
5+
56
[problem] understand current evaluation strategy
67

78
- we can use `Y`! -- `DelayedApply` can replace `Lazy`

examples/ackermann.lisp

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
(import zero add1 sub1 zero? "nat-church.lisp")
22
(import one two "nat-church.lisp")
3-
43
(import if "bool.lisp")
54

65
(define (ackermann m n)
@@ -10,15 +9,6 @@
109
(ackermann (sub1 m) one)
1110
(ackermann (sub1 m) (ackermann m n)))))
1211

13-
(assert-equal ackermann ackermann)
14-
15-
(ackermann zero zero)
16-
(ackermann one zero)
17-
(ackermann zero one)
18-
(ackermann one zero)
19-
;; (ackermann one two)
20-
;; (ackermann two one)
21-
2212
(define ackermann-wrap
2313
(lambda (ackermann)
2414
(lambda (m n)
@@ -28,7 +18,9 @@
2818
(ackermann (sub1 m) one)
2919
(ackermann (sub1 m) (ackermann m n)))))))
3020

31-
ackermann-wrap
21+
(assert-equal ackermann ackermann)
22+
(assert-equal ackermann (ackermann-wrap ackermann))
23+
(assert-equal ackermann (ackermann-wrap (ackermann-wrap ackermann)))
3224

3325
(define (ackermann-1 m n)
3426
((ackermann-wrap ackermann-1)
@@ -45,8 +37,8 @@ ackermann-wrap
4537
(ackermann-wrap ackermann-3)))
4638
m n))
4739

48-
;; (assert-equal ackermann ackermann-1)
49-
;; (assert-equal ackermann ackermann-2)
40+
;; TODO fail:
41+
5042
;; (assert-equal ackermann-1 ackermann-2)
5143
;; (assert-equal ackermann-1 ackermann-3)
5244
;; (assert-equal ackermann-2 ackermann-3)

examples/ackermann.test.lisp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
(import zero one two three "nat-church.lisp")
2+
(import ackermann "ackermann.lisp")
3+
4+
(assert-equal (ackermann zero zero) one)
5+
(assert-equal (ackermann one zero) two)
6+
(assert-equal (ackermann zero one) two)
7+
8+
;; TODO fail:
9+
10+
;; (ackermann one one)
11+
;; (ackermann one two)
12+
;; (ackermann two one)

examples/ackermann.test.lisp.out

Whitespace-only changes.

0 commit comments

Comments
 (0)