SUMMARY

Arrays should always have known lengths because that's what arrays do.  This
requirement is enforced culturally, not programmatically.

DETAILS

I submit for consideration the idea that if an array doesn't always have a
defined length then it ceases to be that incredibly handy construct that we
currently call "array".  If arrays can answer "I dunno" when asked how long
they are, that's taking away a useful feature, not adding one. If we dumb
down arrays we're going to have to spend a lot of time smarting up our code.
Suddenly every time you want to use an array in scalar or numeric context
you first have to check if it has a defined length. That doesn't appeal to
my sense of laziness, and it triggers my sense of impatience.

OTOH, it doesn't seem Perlish to force the programmer to do something he or
she may really not want to do.  As always, Larry is wise in saying "an array
implementation can return anything it jolly well pleases".

So my proposal is that building array classes is like tying arrays and
hashes is right now: there are certain expectations and people won't like
your code if you don't follow the norms.  You should always return a defined
length.  Documentation for arrays should indicate that they should always
return a defined length. If you don't then you've broken the social contract
and people will frown at you.  If applicable to Perl6: the base class for
tied arrays that most people will use to create their own arrays should set
the length method as abstract so it needs to be overridden.

-Miko

Reply via email to