Jon Lang wrote:
Darren Duncan wrote:Jon Lang wrote:Larry Wall wrote:This is basically a non-problem. Junctions have one public method, .eigenstates, which is vanishingly unlikely to be used by accident by any mere mortal any time in the next 100 years, give or take a year. If someone does happen to be programming quantum mechanics in Perl 6, they're probably smart enough to work around the presence of a reserved--well, it's not even a reserved word-- a reserved method name.Actually, the problem isn't with '.eigenstates'; the problem is with '.perl'. If I'm viewing a Junction of items as a single indeterminate item, I'd expect $J.perl to return a Junction of the items' perl by default. Admittedly though, even that isn't much of an issue, seeing as how you _can_ get that result by saying something to the effect of "Junction of $J.eigenstates.«perl" - the only tricky part being how to decide which kind of junction to use (e.g., any, all, one, none) when putting the perl-ized eigenstates back together. (And how _would_ you do that?) This would represent another corner-case where the programmer would be tripped up by a simplistic understanding of what a Junction is; but being a corner-case, that's probably acceptable.I would assume that invoking .perl on a Junction would result in Perl code consisting of the appropriate any/all/etc expression. -- Darren DuncanTough to parse, though; and feels like a kludge. I expect better of Perl 6.
What do you mean by "tough to parse" and "feels like a kludge"? Isn't the point of .perl that it results in a string of Perl 6 code that is a Perl 6 value expression? I wouldn't expect that a Perl 6 expression to result in a Junction is any more difficult to parse than the source code returning an Array or some such.
For example, if you have: my $choice = any(1..10);Then "$choice.perl" should result in code like "any(1..10)". Or "$choice.perl" would approximately be short for the expression:
'any('~($choice.eigenstates.map:{ $_.perl }.join(','))~')'
... except that the .perl of $choice would also be smart enough to pick
'any'/'all'/etc based on what its Junction value actually is.
Such as that seems perfectly elegant and uncomplicated to me.If you had a problem with that, then I would expect you'd have a problem with .perl in general for any value, particularly Array etc values.
-- Darren Duncan
