From: Ron Garret on 7 Jan 2010 04:21 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 7 Jan 2010 04:24 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 7 Jan 2010 04:26 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 7 Jan 2010 04:29 * 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 7 Jan 2010 04:44
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 |