3 |
#:use-module (lang elisp internals null) |
#:use-module (lang elisp internals null) |
4 |
#:use-module (lang elisp internals signal)) |
#:use-module (lang elisp internals signal)) |
5 |
|
|
6 |
(fset 'cons |
(fset 'cons cons) |
|
(lambda (x y) |
|
|
(cons x (or y '())))) |
|
7 |
|
|
8 |
(fset 'null null) |
(fset 'null null) |
9 |
|
|
12 |
(fset 'car |
(fset 'car |
13 |
(lambda (l) |
(lambda (l) |
14 |
(if (null l) |
(if (null l) |
15 |
#f |
%nil |
16 |
(car l)))) |
(car l)))) |
17 |
|
|
18 |
(fset 'cdr |
(fset 'cdr |
19 |
(lambda (l) |
(lambda (l) |
20 |
(if (null l) |
(if (null l) |
21 |
#f |
%nil |
22 |
(cdr l)))) |
(cdr l)))) |
23 |
|
|
24 |
(fset 'eq |
(fset 'eq |
33 |
|
|
34 |
(fset 'setcar set-car!) |
(fset 'setcar set-car!) |
35 |
|
|
36 |
(fset 'setcdr |
(fset 'setcdr set-cdr!) |
|
(lambda (cell newcdr) |
|
|
(set-cdr! cell |
|
|
(if (null newcdr) |
|
|
'() |
|
|
newcdr)))) |
|
37 |
|
|
38 |
(for-each (lambda (sym proc) |
(for-each (lambda (sym proc) |
39 |
(fset sym |
(fset sym |
41 |
(if (null list) |
(if (null list) |
42 |
%nil |
%nil |
43 |
(if (null elt) |
(if (null elt) |
44 |
(or (proc #f list) |
(let loop ((l list)) |
45 |
(proc '() list) |
(cond ((null l) %nil) |
46 |
(proc %nil list) |
((null (car l)) l) |
47 |
(proc 'nil list)) ; 'nil shouldn't be |
(else (loop (cdr l))))) |
|
; here, as it should |
|
|
; have been |
|
|
; translated by the |
|
|
; transformer. |
|
48 |
(proc elt list)))))) |
(proc elt list)))))) |
49 |
'( memq member assq assoc) |
'( memq member assq assoc) |
50 |
`(,memq ,member ,assq ,assoc)) |
`(,memq ,member ,assq ,assoc)) |
86 |
(lambda (n list) |
(lambda (n list) |
87 |
(if (or (null list) |
(if (or (null list) |
88 |
(>= n (length list))) |
(>= n (length list))) |
89 |
#f |
%nil |
90 |
(list-ref list n)))) |
(list-ref list n)))) |
91 |
|
|
92 |
(fset 'listp |
(fset 'listp |