corrections mineures.
This commit is contained in:
parent
0fb441b127
commit
b8c8abcdfb
|
@ -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 :) ).
|
11
lisp2li.lisp
11
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)))
|
||||
|
|
Loading…
Reference in New Issue
Block a user