On Sat, Aug 2, 2014 at 7:38 AM, Pascal Costanza <p...@p-cos.net> wrote:

>
> On 2 Aug 2014, at 06:35, Jean-Claude Beaudoin <
> jean.claude.beaud...@gmail.com> wrote:
>
> > I think I found the subsection you refer to: AMOP  5.3.1 (pp. 142-144)
> "Implementation and User Specialization", which contains two
> sub-subsections with titles starting with "Restrictions on".
> > I will try to decipher those and their implications now that I have
> renewed motivation to do so.
>
>
> There are similar restrictions defined in
> http://www.lispworks.com/documentation/HyperSpec/Body/11_abab.htm -
> bullet 19.
>
>
I missed that one too. Thank you for pointing it out.

But after modifying my test code to take account of it I saw no difference
in the results.
It turns out that it is the last bullet of the sub-subsection "Restrictions
on Portable Programs" that is the key factor in the issue I am interested
in here (last bullet of page 144 in AMOP, or here
<http://franz.com/support/documentation/current/doc/mop/concepts.html#portable>
as pointed by Steve). It basically states that the defmethod on
slot-value-using-class must happen before any call to make-instance on a
class the method uses as a specializer. (And then goes on to motivate this
definition order restriction).
If I modify my test code to comply with this rule (see slot_mop_strict.lsp
here attached) then sbcl stops being the odd man out and behaves like clisp
and ACL (which I think is the proper behavior).

Further, if I agree to stop tickling the system where it does not like to
be tickled and define a class tracked_class as a subclass of standard-class
to be used as a metaclass of the classes I want to track (see
slot_mop_strict_tracked_class.lsp here attached), then all of sbcl, clisp,
ccl and ACL show the same behavior, properly calling slot-value-using-class
both from slot-value or from the slot accessor. Only LispWorks persists in
its (erroneous, I think) behavior of calling s-v-u-c only from slot-value.
I think there is a consensus emerging here.

Thank you all for your help on this matter with a special emphasis toward
Steve.

Attachment: slot_mop_strict.lsp
Description: Binary data

Attachment: slot_mop_strict_tracked_class.lsp
Description: Binary data

_______________________________________________
pro mailing list
pro@common-lisp.net
http://common-lisp.net/cgi-bin/mailman/listinfo/pro

Reply via email to