[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: *****Idea!

I considered solutions like having *sym intern specially. Eg, given CATCH
and *CATCH already on your obarray, then *******CATCH would intern as 
*CATCH (removing redundant *'s -- the original *CATCH is of course entered
with |*CATCH|. This would be nice when a new CATCH came along because it
could become CATCH and *CATCH could become **CATCH and ******CATCH would now
be interned as **CATCH so it would still win. Hence, people who want to just
get ahold of a feature and use it and make their code really safe would use
lots of ***'s ... eg, *******************************CATCH would intern the
same as the oldest version of CATCH until that many *-versions were released.
People that wanted a particular newer version would be resigning themselves to
fight the name game -- ie, they'd use |**CATCH| or |CATCH| and they would be
screwed when the new version comes out, but that's what they'd get for trying
to be coding using the `current fad' in CATCH's as opposed to being happy
with the fine functionality offered by ****...****CATCH in the first place.
It has its disadvantages because presumably if you pick 150 *'s (a fairly
conservative number), you will eventually (at release of version 151 of CATCH)
have to do something. A syntax for an infinite number of *'s might be nice --
for the person to say explicitly that he wants to be (1) maximally correct
and (2) maximally out of date with `style' ... The other alternative is the
more concise CATCH[0] notation which names the version number of CATCH which
you want. This has the attractive feature of what I think it was GLS who
suggested at one point at Lisp conference -- DWTCMY (Do What This Code
Meant Yesterday) [if not yours, GLS, sorry -- I can't think of anyone to 
pin it to ...] So newer versions are just added as CATCH[1], CATCH[2], etc.
Fancy hacks to get intern to share the PNAME word of all of these could 
probably be arranged. This also generalizes nicely to GLS's output radix
print representation -- 555[1] is the outmoded way of expressing 15.,
1111[2] is more recent, 17[8] is more recent, and 15[10] even more recent.
Presumably some day we will adopt F[16] as the standard and ... well, who
knows how far version numbers could take us.