If you made actual evidential arguments why it's good that Nil gets fed
into @variables on assignment, or why is it good that @variables are,
yes, both defined and DEFINITE when only declared, why this
inconsistency, or counterpointing design,with $variables, is a good
thing, we could discuss that.
However, you didn't, so now I'm left with personal impressions. You seem
like the kind of user that Perl 6 should have never created: a user who
is desperately willing to fix themselves when the language is shaking. I
think replicating this mentality, i.e teaching people that they just
have to learn harder, every single time they have a sensible and
consistent complaint about the language, is much more dangerous than
planting the thought that, as promised, Perl 6 made new mistakes, as
opposed to the old Perl 5 mistakes. I think it's only fair that if I
demonstrate a problem, building upon the experience of others, and point
out a direction in which it could be improved, then that's legitimate
impact. Really, let people think that there is a big broad problem in
Raku's design - which is not a unique thing among programming languages
really; part of the reason there is so many of them! - , and give them
ways to cope, and hope for improvements. For the people, that's
healthier than recognizing the problem nevertheless, but finding out
that it's denied.
You probably know that Nil is far from being two decades old, or the
Great List Refactor. These are things that took place before the first
official release but they were also much bigger changes than the one we
are talking about. It *is *possible to change the language, and it is
sometimes desirable as well.
For defined and DEFINITE - I think you are correct and I don't know
myself how to properly explain it. Horribile dictu: I think this part of
the language is overwhelmingly complicated, way beyond usefulness. But I
don't think it's downright contradictory. Another example would be Empty
which is clearly DEFINITE, yet not defined.
Anyway, it doesn't help us with the @variables that start from being
both DEFINITE and defined while $variables start from being not DEFINITE
and clearly not defined.