www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 1aa5c903587d977f1fe0b680c60d09934b72b4e5
parent a61756303474bf71f86ad7e3f849888d5c283783
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date:   Fri, 14 Jan 2011 01:17:18 +0100

Quelques bugs.

Diffstat:
Mlisp/mini-meval.lisp | 5+++--
Mlisp/t.lisp | 19+++++++++++++++++++
Mlisp/tmm.lisp | 27+++++++++++++++++++++++++++
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)