Skip to content

Commit 1f55328

Browse files
committed
more jmc examples from paul graham
1 parent b9d1665 commit 1f55328

1 file changed

Lines changed: 125 additions & 0 deletions

File tree

tests/jmc.lisp

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,123 @@
1+
(define car
2+
(lambda (x)
3+
(car x)))
4+
5+
(define cdr
6+
(lambda (x)
7+
(cdr x)))
8+
9+
(define caar
10+
(lambda (x)
11+
(car (car x))))
12+
13+
(define cadr
14+
(lambda (x)
15+
(car (cdr x))))
16+
17+
(define cdar
18+
(lambda (x)
19+
(cdr (car x))))
20+
21+
(define cddr
22+
(lambda (x)
23+
(cdr (cdr x))))
24+
25+
(define caaar
26+
(lambda (x)
27+
(car (car (car x)))))
28+
29+
(define caadr
30+
(lambda (x)
31+
(car (car (cdr x)))))
32+
33+
(define cadar
34+
(lambda (x)
35+
(car (cdr (car x)))))
36+
37+
(define caddr
38+
(lambda (x)
39+
(car (cdr (cdr x)))))
40+
41+
(define cdaar
42+
(lambda (x)
43+
(cdr (car (car x)))))
44+
45+
(define cdadr
46+
(lambda (x)
47+
(cdr (car (cdr x)))))
48+
49+
(define cddar
50+
(lambda (x)
51+
(cdr (cdr (car x)))))
52+
53+
(define cdddr
54+
(lambda (x)
55+
(cdr (cdr (cdr x)))))
56+
57+
(define caaaar
58+
(lambda (x)
59+
(car (car (car (car x))))))
60+
61+
(define caaadr
62+
(lambda (x)
63+
(car (car (car (cdr x))))))
64+
65+
(define caadar
66+
(lambda (x)
67+
(car (car (cdr (car x))))))
68+
69+
(define caaddr
70+
(lambda (x)
71+
(car (car (cdr (cdr x))))))
72+
73+
(define cadaar
74+
(lambda (x)
75+
(car (cdr (car (car x))))))
76+
77+
(define cadadr
78+
(lambda (x)
79+
(car (cdr (car (cdr x))))))
80+
81+
(define caddar
82+
(lambda (x)
83+
(car (cdr (cdr (car x))))))
84+
85+
(define cadddr
86+
(lambda (x)
87+
(car (cdr (cdr (cdr x))))))
88+
89+
(define cdaaar
90+
(lambda (x)
91+
(cdr (car (car (car x))))))
92+
93+
(define cdaadr
94+
(lambda (x)
95+
(cdr (car (car (cdr x))))))
96+
97+
(define cdadar
98+
(lambda (x)
99+
(cdr (car (cdr (car x))))))
100+
101+
(define cdaddr
102+
(lambda (x)
103+
(cdr (car (cdr (cdr x))))))
104+
105+
(define cddaar
106+
(lambda (x)
107+
(cdr (cdr (car (car x))))))
108+
109+
(define cddadr
110+
(lambda (x)
111+
(cdr (cdr (car (cdr x))))))
112+
113+
(define cdddar
114+
(lambda (x)
115+
(cdr (cdr (cdr (car x))))))
116+
117+
(define cddddr
118+
(lambda (x)
119+
(cdr (cdr (cdr (cdr x))))))
120+
1121
(define null
2122
(lambda (x)
3123
(eq x (quote ()))))
@@ -17,6 +137,11 @@
17137
(cond ((null x) y)
18138
(else (cons (car x) (append (cdr x) y))))))
19139

140+
(define assoc
141+
(lambda (x y)
142+
(cond ((eq (caar y) x) (cadar y))
143+
(else (assoc x (cdr y))))))
144+
20145
(quote andtest)
21146
(and (atom (quote a)) (eq (quote a) (quote a)))
22147
(quote nottest)

0 commit comments

Comments
 (0)