Début de restructuration des répertoires.

This commit is contained in:
Georges Dupéron 2010-11-22 03:07:37 +01:00
parent 0ec5810e5e
commit 3518f784ce
5 changed files with 57 additions and 42 deletions

55
bootstrap/15.1-conses Normal file
View 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)))

View File

View File

@ -0,0 +1,2 @@
(defvar fonctions-globales-importees
'(car cdr cons)) ;; 15.1-conses

View File

@ -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)