pathnames

Chris Bitmead uid(x22068) Chris.Bitmead@Alcatel.com.au
Mon, 12 May 1997 15:54:23 +1000


>> If you want the latest version you should have to ask the
>> registry. (Please-give-me-a-reference-to-the-latest-version-of
>> "Treasure Island"). The latest version is an abstract notion, and
>> it is not appropriate to use a direct reference.
>> 
>> Destructive anything, is in general a bad idea.
>
>Imho, destructive modification is only bad if it changes
>identity. Chapter X is still chapter X, it just has different
>text, and knows about a different previous incarnation.

"X" is an abstract attribute that you have assigned to an
object. Chapter "X" version 1 is not Chapter "X" version 2. They are
different things. The extent that they are in some way equivilent is a
notion that you should impose through your data structures, not
something that the underlying language or file system should have any
care about.

>Think about objects, they're places where destructive modification
>is what makes them make sense, as contained dumping grounds for
>side-effects.

No, modification is not "what makes objects make sense". Object
orientation and destructive side effects are orthogal issues. Object
orientation is equally as useful even in the absence of destructive
side effects.

>Here a nicer solution might be a mostly transparent wrapper object
>which just bounces messages on to the latest chapter by default.
>
>
>But the please-give-me-a-reference-to-the-latest-version-of-treasure
>island opens you up for race conditions, and really makes it like
>a file-system request. I was hoping to get away from the fs level,
>rather than replacing (open "file") with (open #Rfile) :)

I can't see how a transparent wrapper object which bounces requests is
any less open to race conditions.

If I have a reference to Chapter "X" version 3.2, I expect that to
remain a reference to V3.2. I don't expect some magic to transform it
into something else.

If you *do* want some form of magic then you should explicitly invoke
the right incantation. (Abracadabra-give-me-the-latest) or
(Abracadabra-give-me-the-biggest) or (Abracadabra-give-me-the-latest-
that-has-been-published-by-my-printer)

Basicly you are putting forward all the arguments for a non-functional
approach to programming, and I am advocating a functional approach to
solving problems.

I happen to think functional is better, but I would certainly hope
that LispOS would not make non-functional the defacto standard because
of some design decision.