John M. Dlugosz wrote:
Then the declaration
my ::T $x = whatever;
should use the exact same generic mechanism! At worst, it needs
I would expect that this works by binding ::T to the type of whatever.
my Any ::T $x = whatever;
Any here is optional.
and it will introduce the T symbol at that point based on the actual
type of what gets initialized.
Yes. But the problem is that this does *not* fix the constraint
of $x to be T from there on! Or does it?
my ::T $x = 'blahh'; # ::T ::= Str
my T $y = 'blubb';
$x = 23; # legal
$y = 42; # illegal
So perhaps one needs
my ::T T $x = 'blahh';
to constrain $x to the type of the rhs.
The Angel of Geometry and the Devil of Algebra fight for the soul
of any mathematical being. -- Attributed to Hermann Weyl