> From: Deborah Ariel Pickett <[EMAIL PROTECTED]>
> Date: Tue, 11 Feb 2003 11:15:13 +1100 (EST)
> 
> In Perl6, where there seems to be even more of a blur between
> compile-time and runtime, I don't think it's always going to be possible
> (i.e., easy) to know where naming an array or providing an actual list
> would produce the same effect.  The switch statement was my example.
> Apocalypse 4 has a table (page 2 of the perl.com version) which bears
> this out.  Lists have their own entries on this table, separate from
> arrays.  So it's conceivable that a switch statement that switches on a
> list and a switch statement that switches on an array containing the
> same list produces different results.

In these terms, I'd like to refer you to Apocalypse 2, under RFC 009.
I belive this is one (perhaps the only :) thing that hasn't changed
about Perl 6 sice A2.  Particularly:

    ... If composite variables are thought of as scalar references,
    then the names @foo and %foo are really scalar variables unless
    explicitly dereferenced.  That means that when you mention them in
    a scalar context, you get the equivalent of Perl 5's \@foo and
    \%foo.  This simplifies the prototyping system greatly, in that an
    operator like push no longer needs to specify some kind of special
    reference context for its first argument -- it can merely specify
    a scalar context, and that's good enough to assume the reference
    generation on its first argument....

Indeed, this supports the distinction, which I will reiterate:

    - Arrays are variables.
    - Lists are values.

Arrays are things that know about lists.  They know how to get a
particular element out of a list. They know how to *flatten
themselves, interpolating themselves into the surrounding list.  They
know how to map, grep, sort, splice themselves.  They know how to turn
themselves into a scalar.  Lists don't know how to do these things.

Just like, for example, scalars.  A scalar can hold a number.  A
scalar knows how to increment itself, but a number sure doesn't.  

I'm formulating new, wild ideas here...  Another post coming in a
minute.  I hope I clarified the array/list thing at least a little
bit.

Luke

Reply via email to