Juerd wrote:
If assigning a ref to a hash uses the hashref's elements, then the same
is to be expected for an array.

Same feeling here. But I would let the array concede.


Because this behaviour is unwanted for
arrays (because you then can't assign a single arrayref anymore without
doubling the square brackets, communicating an entirely wrong thing),

You mean @a = [[1,2,3]]? Which is quite what you need for multi
dimensional arrays anyway @m = [[1,2],[3,4]] and here you use
of course @m[0][1] to pull out the 2. I'm not sure if this automatically
makes the array multi-dimensional to the type system though. That is
if @m[0,1] returns 2 as well or if it returns the list (1,2) or whatever.
Is @m[0..3] valid and what does it return? And what's the type of that
return value(s)? I can imagine many things ranging from a two element
array of refs to two element arrays up to a flattened list of 4 values.


hashes have to concede as well, even though %a = $href may not make
sense.

I would treat it just the same as a literal hashref build with
{ => } because this should be what the dispatch system sees anyway.
E.g.

%h;
sub assign { my $href = { a => 1, b => 2}; %h = $href }
assign;

should be the same as

%h = { a => 1, b => 2 };


I recall having read something about , being "listfix", not infix. The
same would be true for Y and | and & and ^.

I can't find that in the archives. But it is a nice abbreviation for
&infix:<,> ( ... ) is assoc(list). Could/should the same be done
as chainfix, leftfix and rightfix? Or asterfix, idfix, truebafix, ... :))
This last joke might work for Germans only.
--
TSa (Thomas Sandlaß)

Reply via email to