my $pair = (a => 1);
say $pair[0]; # a?
say $pair[1]; # 1?
I've found this in the Pugs testsuite -- is it legal?
--Ingo
--
Linux, the choice of a GNU | Black holes result when God divides the
generation on a dual AMD | universe by zero.
Athlon! |
It looks like $pair is an arrayref while 'say ref $pair' tells 'Pair'.
And may I ask a relating question:
my $pair = ('name' => 'age');
say $pair{'name'}; # prints 'age'
say $pair['name']; # why prints 'name'? <== question
say $pair['age']; # prints 'name'
--
___________________________________________________________________________
Andrew, an...@shitov.ru
___________________________________________________________________________
Andrew Shitov wrote:
>> say $pair[0]; # a?
>
> It looks like $pair is an arrayref while 'say ref $pair' tells 'Pair'.
right, this is why I asked, IMHO it's bogus.
> And may I ask a relating question:
>
> my $pair = ('name' => 'age');
> say $pair{'name'}; # prints 'age'
> say $pair['name']; # why prints 'name'? <== question
> say $pair['age']; # prints 'name'
That's probably because both "name" and "age" get numified to 0 which in
turn means (in current Pugs) .key.
--Ingo
--
Linux, the choice of a GNU | There are no answers, only
generation on a dual AMD | cross-references.
Athlon! |
Nope. That's:
say $pair.key;
say $pair.value;
Also:
say $pair<a>; # 1
say $pair{anything else}; # undef
But we don't implicitly cast references like that.
Luke
thanks for clarification, that's what I've thought, too :)
--Ingo
--
Linux, the choice of a GNU | The next statement is not true.
generation on a dual AMD | The previous statement is true.
Athlon! |
Yes, for bare pairs, it's probably somewhat bogus. But now I'm asking
myself about the use of as a Lispish '.':
'a' => 'b' => 'c' => 'd'
There's something to be said for having a way of indexing into that
using numeric subscripts. Certainly Lisp's extensible car/cdr notation
is the wrong way to do it, but cdddr is certainly shorter than
$pair.value.value.value
But maybe that's worth being dehuffmanized like that...
Larry
sub infix:<!!> (Scalar $x, 0) { $x }
On 2005-08-05 16:24, "Yuval Kogman" <nothi...@woobling.org> wrote:
> On Fri, Aug 05, 2005 at 11:36:16 -0700, Larry Wall wrote:
>
>> There's something to be said for having a way of indexing into that
>> using numeric subscripts. Certainly Lisp's extensible car/cdr notation
>> is the wrong way to do it, but cdddr is certainly shorter than
>>
>> $pair.value.value.value
>>
>> But maybe that's worth being dehuffmanized like that...
>
> Haskell has !! :
>
> sub infix:<!!> (Pair $x, 0) { $x.key }
> sub infix:<!!> (Pair $x, Int $index) { $x.value !! ($index - 1) }
> There's something to be said for having a way of indexing into that
> using numeric subscripts. Certainly Lisp's extensible car/cdr notation
> is the wrong way to do it, but cdddr is certainly shorter than
>
> $pair.value.value.value
>
> But maybe that's worth being dehuffmanized like that...
Haskell has !! :
sub infix:<!!> (Pair $x, 0) { $x.key }
sub infix:<!!> (Pair $x, Int $index) { $x.value !! ($index - 1) }
--
() Yuval Kogman <nothi...@woobling.org> 0xEBD27418 perl hacker &
/\ kung foo master: /me supports the ASCII Ribbon Campaign: neeyah!!!