commit 1aa5c903587d977f1fe0b680c60d09934b72b4e5
parent a61756303474bf71f86ad7e3f849888d5c283783
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date: Fri, 14 Jan 2011 01:17:18 +0100
Quelques bugs.
Diffstat:
3 files changed, 49 insertions(+), 2 deletions(-)
diff --git a/lisp/mini-meval.lisp b/lisp/mini-meval.lisp
@@ -525,7 +525,7 @@ Mini-meval sera appellé sur des morceaux spécifiques du fichier source. Il fau
#| - Si on a une fonction de ce nom dans l'état-local ou dans l'etat-global, on l'exécute. |#
(apply (cdr definition) (mapcar (lambda (x) (mini-meval x etat)) params))
(mini-meval-error expr etat "Undefined function : ~w." name))))
- ((? or numberp stringp)
+ ((? or numberp stringp characterp)
expr)
;; TODO : nil et t devraient être des defconst
(nil
@@ -536,7 +536,8 @@ Mini-meval sera appellé sur des morceaux spécifiques du fichier source. Il fau
(cdr definition)
(mini-meval-error expr etat "Undefined variable : ~w." expr))))
(_
- (error "mini-meval : this is unsupported : ~a" expr))))
+ (print expr)
+ (error "mini-meval : this is unsupported : ~w ." expr))))
;)
(defun push-functions (etat functions)
diff --git a/lisp/t.lisp b/lisp/t.lisp
@@ -66,4 +66,23 @@
make-symbol
print
endp
+ keywordp
+ consp
+ null
+ atom
+ length
+ map
+ identity
+ last
+ char=
+ member
+ intern
+ format
+ mapcar
+ reverse
+ acons
+ append
+ butlast
+ not
+ listp
))
diff --git a/lisp/tmm.lisp b/lisp/tmm.lisp
@@ -1,4 +1,31 @@
(progn
+ (defvar t 't)
+ (defmacro when (condition &rest body)
+ `(if ,condition
+ (progn ,@body)
+ nil))
+ (defmacro unless (condition &rest body)
+ `(if ,condition
+ nil
+ (progn ,@body)))
+ (defmacro cond (&rest exprs)
+ (if (endp exprs)
+ nil
+ `(if ,(caar exprs)
+ ,(cadar exprs)
+ (cond ,@(cdr exprs)))))
+ (defmacro and (&rest exprs)
+ (if (endp exprs)
+ t
+ `(if ,(car exprs)
+ (and ,@(cdr exprs))
+ nil)))
+ (defmacro or (&rest exprs)
+ (if (endp exprs)
+ nil
+ `(if ,(car exprs)
+ t
+ (or ,@(cdr exprs)))))
(defun n-consp (n l)
"Détermine s'il y a au moins n cellules dans la liste l."
(if (<= n 0)