On Thu, Jul 06, 2006 at 01:21:08AM -0700, Allison Randal wrote:
> The problem is really that we're trying to simultaneously a) refer to 
> the root HLL namespace directly, and b) pretend that it doesn't exist.

I don't think (b) is quite true.  It's more that we're avoiding explicit
re-coding of a known bit of environmental information, as in "the first
floor of this building" rather than "the first floor of 123 main street".

> Chip Salzenberg wrote:
> >Allison, what do you think of zero-length keys, i.e. having [] construct a
> >Key PMC describing no dimensions of lookup?  If we use those we can get rid
> >of the current null-string hack.
> 
> Fundamentally altering the way keyed access works seems like a pretty 
> extreme solution when the problem is just "the root HLL namespace 
> doesn't have a name".

I brought it up partly because I was hoping you'd say something like, "Oh
yeah, we're gonna need zero-length keys anyway for Perl 6".  What is the
parameter to operator:postcircumfix [] when a user says

   @array.[]

?

> It's simpler to give the root HLL namespace a name.

Indeed, it already has the name of "empty list" when a PMC array is the
naming vehicle:

    $P0 = new .FixedPMCArray
    $P1 = get_namespace $P0   # that's the HLL root

There are two kinds of lists in play for namespaces; one of them can have a
length of zero (PMC array), but the other one can't (key), and the one that
can be zero-length doesn't have convenience pasm syntax.

> A null string could be canonized as the "name" of the root namespace, 
> though something a little more meaningful and easier to type would be nice.

I should emphasize that I've gone to the recent trouble of making namespace
[''] *not* mean the HLL root for two reasons: (1) it's poor manners on the
part of a VM to steal names from HLLs or users, and (2) when a user is
working with an array of names, they'll want to be able to decompose the
list -- which puts a string that used to be in the middle out on the front,
or by itself -- without accidentally re-rooting the search.

Possibility: If we introduce a pasm keyword Null to mean a pmc constant null
(and perhaps a string contant null), then the null name could be easier to
type.  It could also be useful in other contexts.

Gentle observation: [] is pretty easy to type, and offers consistency:

    $P2 = get_namespace ['a','b']   # two levels from root
    $P1 = get_namespace ['a']       # one level from root
    $P0 = get_namespace []          # zero levels from root

Ugly hack / joke: If you were willing to look the other way, [] could be an
alternative spelling for PMC Null.  :-P
-- 
Chip Salzenberg <[EMAIL PROTECTED]>

Reply via email to