diff --git a/TODO-Liste b/TODO-Liste index ea7535e..65f057b 100644 --- a/TODO-Liste +++ b/TODO-Liste @@ -18,4 +18,6 @@ Questions : - Peut-on faire funcall sur des macros ? Si oui, on peut réécrire mapcar de manière beaucoup plus efficace dans inplementation-fonctions.lisp. Si non, vu qu'on a defmacro les fonctions car & cdr & d'autres, on ne peut pas les - funcall :( \ No newline at end of file + funcall :( + Réponse : non, on ne peut pas faire de funcall, mapcar etc. sur des macros (erreur "undefined function". Normal : ce + ne sont pas des fonctions :) ). \ No newline at end of file diff --git a/lisp2li.lisp b/lisp2li.lisp index f5e8616..20495d9 100644 --- a/lisp2li.lisp +++ b/lisp2li.lisp @@ -1,6 +1,6 @@ ;; TODO : reste a gerer les defuns, les let, les lambda expression, les setf, les progn, ... (defun lisp2li (expr env) - "Convertis le code LISP en un code intermédiaire reconnu + "Convertit le code LISP en un code intermédiaire reconnu par le compilateur et par l’interpréteur" (cond ((and (atom expr) (constantp expr)) ; literaux (cons :lit expr)) @@ -9,11 +9,12 @@ par le compilateur et par l’interpréteur" (if cell (cons :var (car cell)) (warn "Variable ~S unknown" (car expr))))) - ((and (consp (car expr)) ; λ-expressions - ; => recursion sur arguments - ; => construction environnement - ; => recursion sur corps de la λ-fonction + ((and (consp (car expr)) (eq 'lambda (caar expr))) + ;; λ-expressions + ;; => recursion sur arguments + ;; => construction environnement + ;; => recursion sur corps de la λ-fonction (error "Lambda expression NYI")) ((not (symbolp (car expr))) (warn "~S isn't a symbol" (car expr)))