From: Ron Garret on
In article
<6d821556-254b-4df1-87ce-746055a1fd2c(a)a15g2000yqm.googlegroups.com>,
"Thomas F. Burdick" <tburdick(a)gmail.com> wrote:

> On Jan 7, 4:14 am, mdj <mdj....(a)gmail.com> wrote:
>
> > you (IMO incorrectly) stated that a structure #S(:a a :b b)
> > which has it's definition altered to (b a) has *not* been re-organised
> > when it later displays as #S(:b a :a b). If it was re-organised it
> > would display as #S(:b b :a a), which it did not. There is, you'll
> > agree, only two possible organisations for that structure. I'm sorry
> > you seem to think this makes me a dishonest person, but it seems clear
> > to me that no reasonable implementation would attempt to reorganise
> > the (potentially terabytes) of existing instances when a defstruct is
> > redefined. One has to check what their own implementation does, but I
> > think you'll find that the one you're advocating is the *least*
> > likely, considering it's only even possible at all if the structures
> > remain the same size, and in that case it isn't even necessary to do
> > it at all. I would contend that the only reason implementations allow
> > redefinition at all is to facilitate prototyping and bottom-up design,
> > since the results of doing so will in practice be unpredictable at
> > best, contrived examples notwithstanding.
>
> There are other alternatives to either (1) blindly assuming the new
> layout applies to the old instances, or (2) eagerly changing the
> layout of existing instances. You could hypothetically update them
> lazily using (something like) update-instance-for-redefined-class. I
> don't know of any implementation that does that, however. SBCL/CMUCL
> offer the option to mark the old instances as invalid, so, while you
> won't get A when trying to access the A slot in the above example, at
> least you'll get an error instead of B. I think it's too bad more
> implementations don't do this, it's really useful behavior.

Marking all the old instances as invalid can still be expensive if there
are a lot of them. A better approach would be to have all the instances
have a back-pointer to a (shared) wrapper, and have the wrapper marked
as invalid when the struct is redefined.

Whether this is a good idea or not depends on whether you think that
DEFSTRUCT ought to be a high-level facility or a low-level one.

rg
From: Tamas K Papp on
On Thu, 07 Jan 2010 01:02:57 -0800, Thomas F. Burdick wrote:

> On Jan 7, 8:01 am, Madhu <enom...(a)meer.net> wrote:
>> you exhibit
>> continued behaviour you continue go out of your way to engage me in
>> pointless debate while you shift shape.
>
> OMG! Ron has enlisted sci-fi creatures in his nefarious lexiconical
> consipiracy?!?! THAT must have been his motivation for sending MCL into
> space! The plot thickens!!1!

Good one, thanks for the laugh! Occasional gems like this make this
thread still worth reading.

Tamas
From: Ron Garret on
In article
<a0d04b66-b16e-4630-9a35-16f0cf52b9d7(a)q4g2000yqm.googlegroups.com>,
"Thomas F. Burdick" <tburdick(a)gmail.com> wrote:

> On Jan 7, 8:01 am, Madhu <enom...(a)meer.net> wrote:
> > Matt, quit pretending you are engaging in an honest exchange.
>
> I hope you have something to help you automate this nonsense, a
> keyboard macro at least.
>
> > you exhibit
> > continued behaviour you continue go out of your way to engage me in
> > pointless debate while you shift shape.
>
> OMG! Ron has enlisted sci-fi creatures in his nefarious lexiconical
> consipiracy?!?! THAT must have been his motivation for sending MCL
> into space! The plot thickens!!1!

Doh! Busted!

Damn you, Thomas, now I'll have to come up with a new nefarious plan.
There goes my weekend. :-(

rg
From: Madhu on

* Tamas K Papp <7qlnhlF61gU1(a)mid.individual.net> :
Wrote on 7 Jan 2010 09:24:05 GMT:

|> OMG! Ron has enlisted sci-fi creatures in his nefarious lexiconical
|> consipiracy?!?! THAT must have been his motivation for sending MCL
|> into space! The plot thickens!!1!
|
| Good one, thanks for the laugh! Occasional gems like this make this
| thread still worth reading.

Easily amused aren't we? Still I thought it was better than the usual
flames we get from you ridiculing c.l.l posts from your point of view in
the blub.

--
Madhu
From: Ron Garret on
In article <m3pr5mbdq2.fsf(a)moon.robolove.meer.net>,
Madhu <enometh(a)meer.net> wrote:

> The redefinition of structs has nothing to do with Point 2 Either.

I don't know what point 2 is, but the original example included a
redefinition because "real" structs are opaque. The redefinition was
needed to reveal a particular aspect of the behavior of the underlying
implementation.

> It does not
> appear in Ron's CORRECTED version does not include a redefinition.

That's right. Because list-based structs are not opaque. So the
redefinition turned out not to be necessary to make the point.

> YOU ARE BATSHIT CRAZY IF YOU ASSUME RON WAS TRYING TO ENLIGHTEN YOU WITH
> THAT EXAMPLE.

Whether or not I was *trying* to enlighten him (I was, but that is
neither here nor there) he was, in point of fact, enlightened. Matt
understood exactly the point I was trying to make. Whether that's
because I actually made the point well or because I just got lucky is
open to debate, but the fact that Matt got it (and you didn't and still
don't) is manifestly true.

rg