On Sun May 03 13:24:39 2009, masak wrote:
> <moritz_> rakudo: say (hash(a => '3' )).perl
> <p6eval> rakudo cddb16: OUTPUT«{}␤»
> <moritz_> wait a sec
> <moritz_> let me look up the semantics of hash() first
> <masak> sure.
> <moritz_> If you wish to be less ambiguous, the C<hash> list operator
> will
> <moritz_> explicitly evaluate a list and compose a hash of the
> returned value,
> <moritz_> (from S04)
> <moritz_> S04:1187
> * masak submits rakudobug

This has come up before in the context of the list() function, but I
don't think it was ever resolved, and hash() will seem to want a similar
resolution.

In particular, while we might expect  list(1,2,x=>3,4)  to give us a
list of three elements, syntactically the above has only three
positional arguments and a named argument 'x'.  It's not clear how
list() should function in that case.

With hash() it might be a bit easier -- we simply use all of the named
arguments as part of constructing the hash.  But ordering becomes a bit
of an issue -- what to do with...?

    hash('x' => 3, 'x', 4)

Does the resulting entry for 'x' become [3, 4] or [4, 3]?  Or do we need
to know the relative ordering of the named/positional arguments (as in
list() above)?

At any rate, the spec seems to want a slight clarification here.

Thanks,

Pm



Reply via email to