A long-standing bug (more than 2 years!)
(let ((x 0))
(declare (special x))
(let ((x 1))
(let ((y x))
(declare (special x))
y)))
should return 1 while it returns 0 in CLISP.
Bruno said:
It's a "simple" implementation bug.
But fixing it requires changing
- LAMBDA in eval.d/control.d,
- LET and LET* in control.d, the walker in init.lisp,
- LAMBDA, LET, LET* in compiler.lisp.
This can't be done in two days,
it takes more time to get right.
Logged In: YES
user_id=5735
on a sound consideration of 3+ years,
I decided to punt on this.
Logged In: YES
user_id=5735
fixed:
sds: interpreted
bruno: compiled