Début de restructuration des répertoires.
This commit is contained in:
parent
0ec5810e5e
commit
3518f784ce
55
bootstrap/15.1-conses
Normal file
55
bootstrap/15.1-conses
Normal file
|
@ -0,0 +1,55 @@
|
|||
;; PRIMITIVE : car
|
||||
;; PRIMITIVE : cdr
|
||||
;; PRIMITIVE : cons
|
||||
;; NEED : eql
|
||||
;; NEED : complement
|
||||
|
||||
(defun caaaar (list) (car (car (car (car list)))))
|
||||
(defun caaadr (list) (car (car (car (cdr list)))))
|
||||
(defun caadar (list) (car (car (cdr (car list)))))
|
||||
(defun caaddr (list) (car (car (cdr (cdr list)))))
|
||||
(defun cadaar (list) (car (cdr (car (car list)))))
|
||||
(defun cadadr (list) (car (cdr (car (cdr list)))))
|
||||
(defun caddar (list) (car (cdr (cdr (car list)))))
|
||||
(defun cadddr (list) (car (cdr (cdr (cdr list)))))
|
||||
(defun cdaaar (list) (cdr (car (car (car list)))))
|
||||
(defun cdaadr (list) (cdr (car (car (cdr list)))))
|
||||
(defun cdadar (list) (cdr (car (cdr (car list)))))
|
||||
(defun cdaddr (list) (cdr (car (cdr (cdr list)))))
|
||||
(defun cddaar (list) (cdr (cdr (car (car list)))))
|
||||
(defun cddadr (list) (cdr (cdr (car (cdr list)))))
|
||||
(defun cdddar (list) (cdr (cdr (cdr (car list)))))
|
||||
(defun cddddr (list) (cdr (cdr (cdr (cdr list)))))
|
||||
(defun caaar (list) (car (car (car list)))))
|
||||
(defun caadr (list) (car (car (cdr list)))))
|
||||
(defun cadar (list) (car (cdr (car list)))))
|
||||
(defun caddr (list) (car (cdr (cdr list)))))
|
||||
(defun cdaar (list) (cdr (car (car list)))))
|
||||
(defun cdadr (list) (cdr (car (cdr list)))))
|
||||
(defun cddar (list) (cdr (cdr (car list)))))
|
||||
(defun cdddr (list) (cdr (cdr (cdr list)))))
|
||||
(defun caar (list) (car (car list)))))
|
||||
(defun cadr (list) (car (cdr list)))))
|
||||
(defun cdar (list) (cdr (car list)))))
|
||||
(defun cddr (list) (cdr (cdr list)))))
|
||||
|
||||
;; Comptez les "d" :)
|
||||
(defun first (list) (car list))
|
||||
(defun second (list) (cadr list))
|
||||
(defun third (list) (caddr list))
|
||||
(defun fourth (list) (cadddr list))
|
||||
(defun fifth (list) (car (cddddr list)))
|
||||
(defun sixth (list) (cadr (cddddr list)))
|
||||
(defun seventh (list) (caddr (cddddr list)))
|
||||
(defun eighth (list) (cadddr (cddddr list)))
|
||||
(defun ninth (list) (car (cddddr (cddddr list))))
|
||||
(defun tenth (list) (cadr (cddddr (cddddr list))))
|
||||
|
||||
(defun tree-equal (x y &key (:test #'eql) :test-not)
|
||||
(when test-not (setq test (complement test-not)))
|
||||
(if (or (consp x) (consp y))
|
||||
(and (consp x)
|
||||
(consp y)
|
||||
(tree-equal (car x) (car y) :test test)
|
||||
(tree-equal (cdr x) (cdr y) :test test))
|
||||
(funcall test x y)))
|
0
bootstrap/core-mcompile.lisp
Normal file
0
bootstrap/core-mcompile.lisp
Normal file
2
bootstrap/core-meval.lisp
Normal file
2
bootstrap/core-meval.lisp
Normal file
|
@ -0,0 +1,2 @@
|
|||
(defvar fonctions-globales-importees
|
||||
'(car cdr cons)) ;; 15.1-conses
|
|
@ -58,48 +58,6 @@
|
|||
(defmacro cdr (list)
|
||||
(%asm )) ;; TODO : list dans rX, résultat dans rY => move rX, rY; incr rY; move [indirect rY], rY;
|
||||
|
||||
;; Les alias c*r ont été générés par un script (plus facile que de les méta-programmer...).
|
||||
(defmacro caaaar (list) `(car (car (car (car ,list)))))
|
||||
(defmacro caaadr (list) `(car (car (car (cdr ,list)))))
|
||||
(defmacro caadar (list) `(car (car (cdr (car ,list)))))
|
||||
(defmacro caaddr (list) `(car (car (cdr (cdr ,list)))))
|
||||
(defmacro cadaar (list) `(car (cdr (car (car ,list)))))
|
||||
(defmacro cadadr (list) `(car (cdr (car (cdr ,list)))))
|
||||
(defmacro caddar (list) `(car (cdr (cdr (car ,list)))))
|
||||
(defmacro cadddr (list) `(car (cdr (cdr (cdr ,list)))))
|
||||
(defmacro cdaaar (list) `(cdr (car (car (car ,list)))))
|
||||
(defmacro cdaadr (list) `(cdr (car (car (cdr ,list)))))
|
||||
(defmacro cdadar (list) `(cdr (car (cdr (car ,list)))))
|
||||
(defmacro cdaddr (list) `(cdr (car (cdr (cdr ,list)))))
|
||||
(defmacro cddaar (list) `(cdr (cdr (car (car ,list)))))
|
||||
(defmacro cddadr (list) `(cdr (cdr (car (cdr ,list)))))
|
||||
(defmacro cdddar (list) `(cdr (cdr (cdr (car ,list)))))
|
||||
(defmacro cddddr (list) `(cdr (cdr (cdr (cdr ,list)))))
|
||||
(defmacro caaar (list) `(car (car (car ,list)))))
|
||||
(defmacro caadr (list) `(car (car (cdr ,list)))))
|
||||
(defmacro cadar (list) `(car (cdr (car ,list)))))
|
||||
(defmacro caddr (list) `(car (cdr (cdr ,list)))))
|
||||
(defmacro cdaar (list) `(cdr (car (car ,list)))))
|
||||
(defmacro cdadr (list) `(cdr (car (cdr ,list)))))
|
||||
(defmacro cddar (list) `(cdr (cdr (car ,list)))))
|
||||
(defmacro cdddr (list) `(cdr (cdr (cdr ,list)))))
|
||||
(defmacro caar (list) `(car (car ,list)))))
|
||||
(defmacro cadr (list) `(car (cdr ,list)))))
|
||||
(defmacro cdar (list) `(cdr (car ,list)))))
|
||||
(defmacro cddr (list) `(cdr (cdr ,list)))))
|
||||
|
||||
;; Comptez les "d" :)
|
||||
(defmacro first (list) `(car ,list))
|
||||
(defmacro second (list) `(cadr ,list))
|
||||
(defmacro third (list) `(caddr ,list))
|
||||
(defmacro fourth (list) `(cadddr ,list))
|
||||
(defmacro fifth (list) `(car (cddddr ,list)))
|
||||
(defmacro sixth (list) `(cadr (cddddr ,list)))
|
||||
(defmacro seventh (list) `(caddr (cddddr ,list)))
|
||||
(defmacro eighth (list) `(cadddr (cddddr ,list)))
|
||||
(defmacro ninth (list) `(car (cddddr (cddddr ,list))))
|
||||
(defmacro tenth (list) `(cadr (cddddr (cddddr ,list))))
|
||||
|
||||
(defmacro let (bindings &rest body)
|
||||
`((lambda ,(mapcar #'car bindings)
|
||||
,@body)
|
||||
|
|
Loading…
Reference in New Issue
Block a user