On Mon, Feb 21, 2005 at 11:32:16AM -0800, Larry Wall wrote:
> On Mon, Feb 21, 2005 at 02:07:10PM +0000, osfameron wrote:
> : > In Perl 6, C<< => >> is a fully-fledged anonymous object constructor --
> : > like C<[...]> and C<{...}>. The objects it constructs are called
> : >"pairs"
> : > and they consist of a key (the left operand of the C<< => >>), and a
> : >value
> : > (the right operand).
> :
> : Can pairs also be used to create linked lists?
> :
> : my $x = 1=>2=>3=>4
> :
> : $x.key = 1
> : $x.value = 2=>3=>4
>
> Yep, certainly--as any Lisp programmer knows, pairs can be used to create
> linked lists. But we were hoping nobody would notice that. :-)
>
> In any event, we haven't optimized the pair notation to be the standard
> list notation. (But then, almost nobody actually uses dot notation
> much in Lisp either...)
>
> On the gripping hand, lists in Perl have historically been optimized
> to be in contiguous memory rather than in linked lists, so standard
> list notation in Perl is not based on pair semantics as it is in Lisp.
> It would be possible to come up with a linked list notation for Perl 6
> and install it via some kind of grammatical munge. Bare S-expressions
> won't work in standard Perl, of course, unless you make "(foo"
> parse like some kind of reserved word for a known set of "foo".
> I'm sure if you did that someone would consider it perverse.
>
Just to clarify then, are the following two equivolent?
my $x = 1 => 2 => 3 => 4;
my $x = 1 => (2 => (3 => 4));
Steve Peters
[EMAIL PROTECTED]