Larry~ On 7/27/05, Larry Wall <[EMAIL PROTECTED]> wrote: > On Wed, Jul 27, 2005 at 08:01:25PM +0800, Autrijus Tang wrote: > : On Fri, Jul 22, 2005 at 03:40:34PM -0700, Larry Wall wrote: > : > I dunno. I'm inclined to say that it should default to Item|Pair, and > : > let people say Any explicitly if they really want to suppress > autothreading. > : > Otherwise conditionals and switches are going to behave oddly in the > : > presence of "accidental" junctions. > : > : Okay. However, in that view, I suspect many builtins will be defined on > : Item|Pair, for example &perl, &clone, &id, as well as various coercion > : builtins. Considering that builtins are Code objects but not Routines, > : maybe they, too, should default to Item|Pair -- except the ones that > : operates on junctions, of course. > : > : This leads me to think that maybe users don't really need to write down > : the two junctive types, under the hierarchy below: > : > : - Object > : - Any > : - Item > : - ...pretty much everything > : - Pair > : - Junction > : - num, int, str... > : > : Since junctions are still boxed objects, having the Object type to > : effectively mean Any|Junction seems natural ("everything is an object"). > : > : Also, since Any unifies Item and Pair, the rule for implicit types of > : argument becomes: > : > : sub ($x) { } # Item $x > : -> $x { } # Any $x - i.e. Item|Pair but not Junction > : { $^x } # Any $x - i.e. Item|Pair but not Junction > : > : Does this sound sane? > > Yes. The only thing I don't like about it is that any() isn't an Any. > Maybe we should rename Any to Atom. Then maybe swap Item with Atom, > since in colloquial English you can say "that pair of people are > an item." That would give us: > > - Object > - Item > - Atom > - ...pretty much everything > - Pair > - Junction > - num, int, str... > > which nicely distinguishes Item from Junction. On the other hand, > I actually kinda dislike the word "Atom" for common use (too much > exposure to Lisp, I guess), so maybe we just want > > - Object > - Mumble > - Item > - ...pretty much everything > - Pair > - Junction > - num, int, str... > > where Mumble is something like Atom/NonJunction/Unit/Scalar/[your ad here].
While we are talking about words... I dislike having Object encompass Juction. I get the feeling that some people will write functions that take Objects and not expect Junctions to slip in. I suppose that could be one of those hurdles that developers just have to jump, but it doesn't feel like it should be. Matt -- "Computer Science is merely the post-Turing Decline of Formal Systems Theory." -Stan Kelly-Bootle, The Devil's DP Dictionary