Phoenix.pm: quoting constant hash keys survey

Scott Walters scott at illogics.org
Sat Apr 17 12:25:52 CDT 2004


Originally it was proposed that currying happen automatically in codereference
context (Perl 6 has numerous contexts, rather than just void, scalar and list)
and a routine could accept more named parameters than it was given, but it was
decided that this was too automatic (though very cool), so the current plan is
that code references have a curry method:

  sub ($foo, $bar) { $foo + $bar }.curry(15).(30); # 45

That's position parameters.

  sub ($foo, $bar) { $foo + $bar }.curry(foo => 15).(bar => 30); # 45

That's using named parameters. Come to think of it, named parameters and currying
aren't as automatic as currying should be, but this works well with placeholders:

  sub { $^a + $^b }.curry(15).(30); # 45

Of course, this all works on code references, too, which look like &foo
(rather than \&foo as in P5).

-scott



On  0, eden li <eden.li at asu.edu> wrote:
> 
> Ooo nice.  I should pay more attention to Perl6's development.  I wonder if they're gonna implement any of the currying features we had discussed at PM before.  (i.e. defining a unary function that can be applied to any number of arguments ala lambda calculus).
> 
> Anyway, back to the vote, in case it wasn't clear.  My vote is a yea for `.
> 
> Scott Walters wrote:
> > String concat has been renamed ~ from _. . is method call. Primitive
> > types "autobox" now, so you can ask an array for a length or a hash
> > for its keys:
> > 
> >   %hash.keys  # method call
> > 
> > So, people have adopted the dot for method calls, and JavaScript uses the
> > dot for both method calls and hash subscripts (as well as array indices),
> > but since we could be either calling a method or subscripting a primitive,
> > we have to tell perl which it is or risk confusion when we can't access
> > hash subscripts with the same name as methods.
> 



More information about the Phoenix-pm mailing list