Ajout du cas du let* dans le lisp2li

This commit is contained in:
Bertrand BRUN 2010-11-10 15:17:00 +01:00
parent 6d79577cc1
commit fd2e4073d3
2 changed files with 9 additions and 1 deletions

View File

@ -143,6 +143,14 @@ par le compilateur et par linterpréteur"
,(lisp2li value env))))
names values)
,(lisp2li (implicit-progn body) new-env)))))
((eq 'let* (car expr))
(cond-match expr
(((? (eq x 'let*)) :bindings () :body _*)
(lisp2li (implicit-progn body) env))
(((? (eq x 'let*)) :bindings ((:name $ :value _) :rest ($ _)*) :body _*)
(lisp2li `(let ((,name ,value))
(let* ,rest
,@body)) env))))
;; defun
((eq 'defun (car expr))
`(:call set-defun (:const . ,(second expr))

View File

@ -109,7 +109,7 @@ darguments dans un certain environnement."
(let ((sub-env (get-env-num num-env env)))
(if sub-env
(aref sub-env index)
(error "The variable unbound" expr))))
(error "The variable unbound : ~w" expr))))
((:nil :if :predicat @. :expr1 @. :expr2 @.)
(if (meval predicat env)
(meval expr1 env)