corrections mineures.

This commit is contained in:
Georges Dupéron 2010-10-30 21:51:19 +02:00
parent 0fb441b127
commit b8c8abcdfb
2 changed files with 9 additions and 6 deletions

View File

@ -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 :(
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 :) ).

View File

@ -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 linterpréteur"
(cond ((and (atom expr) (constantp expr)) ; literaux
(cons :lit expr))
@ -9,11 +9,12 @@ par le compilateur et par linterpré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)))