[Openmcl-devel] OpenMCL 1.0-rc1
Bill Clementson
billclem at gmail.com
Sun Sep 25 16:35:21 PDT 2005
On 9/25/05, bryan o'connor <bryan-lisp at lunch.org> wrote:
> > (make-instance #+sbcl #-sb-thread 'bc-sbcl
> > #+sbcl #+sb-thread 'bc-sbcl
> > #-sbcl 'bc
> > :slot1 "test"))
>
> the way reader conditionals work has changed since 0.14.3
> to properly handle "nested" conditionals like above.
> the "inside" conditional now gets properly evaluated.
It appears that OpenMCL 0.14.3 and Allegro CL both handle "nested"
conditionals one way and OpenMCL 1.0-rc1 and LispWorks handle "nested"
conditionals in another way. I had a look at the CLHS 2.4.8.17 and
2.4.8.18 (and related sections) and can not find a clear explanation
of what the correct behaviour should be.
> if sb-thread is not in *features*, your above form becomes:
>
> (make-instance #+sbcl 'bc-sbcl
> #+sbcl
> #-sbcl 'bc
> :slot1 "test")
>
> then with sbcl not in *features* becomes:
>
> (make-instance :slot1 "test")
>
>
> here's a version that should work:
>
> (make-instance #+sbcl #+sb-thread 'bc-sbcl
> #-sb-thread 'bc-sbcl ; same as above?
> #-sbcl 'bc
> :slot1 "test")
That will work for OpenMCL 1.0-rc1 and LispWorks but will fail for
OpenMCL 0.14.3 and Allegro CL. The 2nd expression probably needs to be
converted to a feature expression - e.g. - something like #+(and sbcl
(not sb-thread))
> this is either covered in 2.4.8.17 or the sections to which
> it refers.
Again, I was not able to find a clear explanation of how nested
conditionals should be handled. If you could please point me to the
correct place in the hyperspec, I will forward a bug report to Franz.
Cheers,
Bill
More information about the Openmcl-devel
mailing list