In CLOS, instance remorphing considered useless in practice?
Marco Antoniotti
marco.antoniotti at unimib.it
Wed Dec 9 11:17:42 UTC 2020
... I forgot.
Let's get the CLtL2 "Environment" API back in the "extended" spec.
Which brings me to the following statement. The issue here is to *extend *the
spec; not to cut pieces out of it.
All the best.
Marco
PS. Nag, nag. :) ABCL crowd! You said you were going to bring the
environment API in "Very Soon Now" (tm). I have not checked the latest and
greatest ABCL, but is it in now? :) :) :)
On Wed, Dec 9, 2020 at 12:07 PM Marco Antoniotti <marco.antoniotti at unimib.it>
wrote:
> Jean-Claude
>
> the point is that CLOS is not a "library", although it was certainly
> possible to implement it that way.. It is an integral part of CL "as is".
>
> I see that the discussion has gone ahead, but here is my 2 cents. I don't
> have much time to work on it due to my day job (and other - retrocomputing
> - distractions).
>
> First of all there are several issues with CL which need to be clarified.
>
> - Some time ago, I started looking at reviewing the condition
> hierarchy. The motivation being the fact that
> (read-from-string "I-AM-NOT-A-PACKAGE::FOO")
> yields different conditions in different implementations. This is
> just an example: there are many, many more.
> - If your really want to help a "smart enough compiler" to produce
> fast code, what about writing up a precise explanation, wrt the current CL
> standard of what an extension like
> (defclass foo (a1 a2 ... an)
> (... slots...)
> ...
> (:sealed t))
> should actually do?
> - I still would like to be able to write an interval arithmetic
> package in Common Lisp (yes; I may have hooked up a student to finish the
> grunt work of producing an initial spec that could be discussed in detail.
> - Can we have a common and Common Lispy network interface?
> - Did I mention
> (pathname-device some-pathname)
> ?
>
> The list can go on. But what I have in mind are all clarifications and
> extension to the CL spec as is. Not that there aren't libraries out there
> that do some or most of what I have in mind, but that's' the way things are
> right now.
>
> All the best
>
> Marco
>
> On Wed, Dec 9, 2020 at 10:11 AM Jean-Claude Beaudoin <
> jean.claude.beaudoin at gmail.com> wrote:
>
>>
>>
>> On Wed, Dec 9, 2020 at 3:16 AM Nick Levine <nick at nicklevine.org> wrote:
>>
>>> > Can I ask why you invoke #'CL:CHANGE-CLASS on an object instead of
>>> simply creating a new instance of the second class with adequate
>>> initialization?
>>>
>>> Because you’d have to go find all the pointers to the old instance.
>>> Maybe you don’t want to do that. Or maybe you don’t care, but that’s ok
>>> because what CLOS gives you is possibilities.
>>>
>>
>> Yes, preserving instance identity is at the core of the question. It
>> could even be the only question here. Is there any other?
>>
>> But what looks like an occasional convenience comes at a cost.
>>
>>
>>> Class redefinition is cheap, in the sense that until you touch each
>>> instance (i.e. passing it to a method) no work is done on it. I suspect —
>>> but can’t remember the details — that cl:change-class recalculated slots on
>>> the spot.
>>>
>>> - nick
>>>
>>
>>
>> BTW, I just remembered that PCL (that venerable demonstration
>> implementation of CLOS) contains all the machinery needed to implement that
>> identity preservation feature as application level code expressed in CLTL1
>> compatible code.
>> So this shows that the whole thing could be implemented as a
>> library/package all from the beginning.
>> It is a proof of concept of some kind I would say.
>>
>>
>
> --
> Marco Antoniotti, Associate Professor tel. +39 - 02 64 48 79 01
> DISCo, Università Milano Bicocca U14 2043 http://bimib.disco.unimib.it
> Viale Sarca 336
> I-20126 Milan (MI) ITALY
>
--
Marco Antoniotti, Associate Professor tel. +39 - 02 64 48 79 01
DISCo, Università Milano Bicocca U14 2043 http://bimib.disco.unimib.it
Viale Sarca 336
I-20126 Milan (MI) ITALY
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/pro/attachments/20201209/11048ce2/attachment.html>
More information about the pro
mailing list