Re: $pair[0]?

2005-08-05 Thread Mark Reed
Seems like you left out the degenerate case for when you run out of pairs:

sub infix: (Scalar $x, 0) { $x }



On 2005-08-05 16:24, "Yuval Kogman" <[EMAIL PROTECTED]> 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) }




Re: $pair[0]?

2005-08-05 Thread Yuval Kogman
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) }

-- 
 ()  Yuval Kogman <[EMAIL PROTECTED]> 0xEBD27418  perl hacker &
 /\  kung foo master: /me supports the ASCII Ribbon Campaign: neeyah!!!



pgpMrMvGz2R03.pgp
Description: PGP signature


Re: $pair[0]?

2005-08-05 Thread Larry Wall
On Fri, Aug 05, 2005 at 12:27:53AM +0200, Ingo Blechschmidt wrote:
: Hi,
: 
: 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.

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


Re: $pair[0]?

2005-08-04 Thread Ingo Blechschmidt
Hi,

Luke Palmer wrote:
> On 8/4/05, Ingo Blechschmidt <[EMAIL PROTECTED]> wrote:
>> my $pair = (a => 1);
>> say $pair[0];  # a?
>> say $pair[1];  # 1?
>> 
>> I've found this in the Pugs testsuite -- is it legal?
> 
> Nope.  That's:
> 
> say $pair.key;
> say $pair.value;
> 
> Also:
> 
> say $pair;  # 1
> say $pair{anything else};   # undef
> 
> But we don't implicitly cast references like that.

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!|



Re: $pair[0]?

2005-08-04 Thread Luke Palmer
On 8/4/05, Ingo Blechschmidt <[EMAIL PROTECTED]> wrote:
> Hi,
> 
> my $pair = (a => 1);
> say $pair[0];  # a?
> say $pair[1];  # 1?
> 
> I've found this in the Pugs testsuite -- is it legal?

Nope.  That's:

say $pair.key;
say $pair.value;

Also:

say $pair;  # 1
say $pair{anything else};   # undef

But we don't implicitly cast references like that.

Luke


Re: $pair[0]?

2005-08-04 Thread Ingo Blechschmidt
Hi,

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!| 



Re: $pair[0]?

2005-08-04 Thread Andrew Shitov
> say $pair[0];  # a?

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, [EMAIL PROTECTED]
___



$pair[0]?

2005-08-04 Thread Ingo Blechschmidt
Hi,

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!|