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



pgpwvUOkkSv2z.pgp
Description: PGP signature


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) }




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



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 $paira;  # 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!|