Ok, stepping back...

there are three questions:

* Can a type be undefined
* What does an array say when asked for an element that doesn't exist
* What happens when you try to undefine something

I really think you need an attribute to clarify these.

For example, you would not say:

        my int @a

but, rather

        my @a is of(int)

or some such ("of" is a place-holder here that I don't much like because
it looks like "if"). In other words, the array itself is not an int. It
just contains them. You could have said:

        my FunkyArray is of(int)

no?

Now, when you ask for an int that doesn't exist what do you get? By
default, I would suppose 0, but couldn't I want an integer-only data
type that *can* be undef?

If so, isn't that:

        my @a is of(int but undefinable)

Ok, now we get to the meat of the matter:

        my @a is of(int but undefinable), default(100)

here we have a perfectly valid thing to want. A list whose elements can
be undef or an integer, and which default to 100 when read
uninitialized.

As for the argument that testing for true non-existentness is a burden,
check out the way Perl5 does this. Hint: there's a central sv_undef, and
that's not what array buckets are initialized to....


-- 
Aaron Sherman <[EMAIL PROTECTED]>
This message (c) 2003 by Aaron Sherman,
and granted to the Public Domain in 2023.
Fight the DMCA and copyright extension!


Reply via email to