From: Bruno H. <br...@cl...> - 2005-01-18 19:08:50
|
I wrote: > One more test case (after reading CLHS 3.3.4): > > (LET ((X 5)) > (PROGV '(X) '(20) > (LET* ((X (1+ X)) (Z (1+ X))) (DECLARE (SPECIAL X)) Z))) => 7 > (LET ((X 5)) > (PROGV '(X) '(20) > (LET* ((Y (1+ X)) (Z (1+ X))) (DECLARE (SPECIAL X)) Z))) => 21 Oops, after reading CLHS 3.3.4 and SPECIAL once again, I think the second test case is wrong: the (SPECIAL X) is a _free_ declaration here, and therefore does not apply to the initforms of Y and Z. So (LET ((X 5)) (PROGV '(X) '(20) (LET* ((Y (1+ X)) (Z (1+ X))) (DECLARE (SPECIAL X)) Z))) => 6 ACL 6.2 gets it right, SBCL and CLISP have a bug here. Bruno |