Ingo Blechschmidt writes:
> that's really convenient, but what will the following code do?
>   my $x = (a => 42); # $x is a Pair.
>   $x = 13;           # Is $x now the Pair (a => 13) or
>                      #           the Int 13?

It's the Int 13.  Your example looks a lot like this one:

    my $x = [ 1, 2, 3 ];
    $x = 13;
    
And you could say that is an error because:

    [ 1, 2, 3 ] = 13;

Is an error, but you'd be wrong.  You see, in your example, the pair is
not "functioning as an lvalue".  The variable is the thing that is the
lvalue, not the pair.

I belive you could get the pair as an lvalue if you did:

    my (Pair $x) := (a => 42);
    $x = 13;

Because the variable x is now *fundamentally* a pair; it has no
container, so to speak.  But it would die, because you're trying to
change a constant value.

Luke

Reply via email to