On 5/14/07, Jonathan Lang <[EMAIL PROTECTED]> wrote:
Good examples. Now could you provide some to explain to me why it's
important to distinguish between '$', '@', '%', and '&'? I ask
because I've seen a lot of object-based code that has said stuff like
'$container{$key}';
Well, $container{$key} is how you access elements of %container in
Perl5; in Perl6 that's %container{$key}. But in object-based P5 code,
you'd be much more likely to see $container->{$key}, where $container
contains a reference to a hash. I believe in P6 you could write that
either as $container.{$key}, $container{$key} (where the . is implied
since $container{$key} can't refer to %container anymore), or
%$container{$key}.
If I understand your point, however, it is that the availability of
references, which are scalars, has essentially removed the
scalar/array/hash/sub distinction, since you can store references to
any of those things in a $var. Further, in order to dereference such
references, you need something beyond the sigil anyway, which takes
its place as a type disambiguator.
You aren't the only person who feels this way; there was a proposal
back in the RFC process to remove sigils in favor of "everything is a
scalar, dereference as needed". I was in that camp myself. But Larry
rejected that proposal, defending the utility of sigils, and I have
been swayed by the arguments, which I'm not going to repeat because I
can't say it as well, but I do advise you to go read - it was either
Apoc1 or Apoc2, I think.
Anyway, one of the things I like about the Perl6 design is that it
essentially restores sigils to their pre-Perl5 importance via
automatic referencing and dereferencing according to context. This
effectively removes the "everything's a scalar anyway" argument since
you can toss references around without making everything a $var. (I
dunno how many times I have tried to declare and initialize a hash
with my %hash = { ... }, which initializes the hash to have a single
element whose key is the hash reference provided and whose value is
undef... but in P6 that does the right thing.)
--
Mark J. Reed <[EMAIL PROTECTED]>