|
From: Nikodemus S. <nik...@ra...> - 2006-10-24 10:07:58
|
Nikodemus Siivola <nik...@ra...> writes:
> I think I have a fix, though.
This should do it. (I commit this as 0.9.18.early).
(in-package :sb-c)
(unlock-package :cl)
(def-ir1-translator let* ((bindings &body body)
start next result)
#!+sb-doc
"LET* ({(var [value]) | var}*) declaration* form*
Similar to LET, but the variables are bound sequentially, allowing each VALUE
form to reference any of the previous VARS."
(if (listp bindings)
(multiple-value-bind (forms decls)
(parse-body body :doc-string-allowed nil)
(multiple-value-bind (vars values) (extract-let-vars bindings 'let*)
(processing-decls (decls vars nil next result post-binding-lexenv)
(ir1-convert-aux-bindings start
next
result
forms
vars
values
post-binding-lexenv))))
(compiler-error "Malformed LET* bindings: ~S." bindings)))
(lock-package :cl)
Cheers,
-- Nikodemus Schemer: "Buddha is small, clean, and serious."
Lispnik: "Buddha is big, has hairy armpits, and laughs."
|