Hi, Juerd wrote: > Ingo Blechschmidt skribis 2005-10-10 20:08 (+0200): >> Named arguments can -- under the proposal -- only ever exist in >> calls. > > Which leaves us with no basic datastructure that can hold both > positional and named arguments. This is a problem because in a call, > they can be combined.
Very true. This is why we need Luke's Tuple proposal [1]. Basically: my $tuple = (a => 1, (b => 2)):{ ...block... }; # $tuple.isa(Tuple) # Tuples are ordinary objects -- they can be stored # in scalars, arrays, etc. # But splatting tuples unfolds their magic: foo(*$tuple); # same as foo(a => 1, (b => 2)):{ ...block...}; # named arg "a", positional pair (b => 2), # adverbial block { ...block... } # (Yep, under the current proposal, tuple construction conflicts # with list/array construction. FWIW, I'd be fine with # using Tuple.new(...) as the tuple constructor.) --Ingo [1] http://svn.openfoundry.org/pugs/docs/notes/theory.pod