commit 3518f784ce3d5a16a2787cab415f59d80cb7a5cc
parent 0ec5810e5e1ad43d8310e25ce11e3ea1bd18296d
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date: Mon, 22 Nov 2010 03:07:37 +0100
Début de restructuration des répertoires.
Diffstat:
5 files changed, 57 insertions(+), 42 deletions(-)
diff --git a/bootstrap/15.1-conses b/bootstrap/15.1-conses
@@ -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)))
diff --git a/implementation/loop.lisp b/bootstrap/26-loop.lisp
diff --git a/bootstrap/core-mcompile.lisp b/bootstrap/core-mcompile.lisp
diff --git a/bootstrap/core-meval.lisp b/bootstrap/core-meval.lisp
@@ -0,0 +1,2 @@
+(defvar fonctions-globales-importees
+ '(car cdr cons)) ;; 15.1-conses
diff --git a/implementation/divers.lisp b/implementation/divers.lisp
@@ -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)