Rod Adams wrote:
I also find the following incredibly disturbing:

 >perl6 -e "$x = 'cat'|'dog'; say $x;"
dog
cat

That would be disturbing if that's what happened. C<say @what> is just a shorthand for C<print @what, "\n">. So saying a junction is the same as printing it, which is a run-time error.


Can a junction hold values of completely different types, or just different values of the same type?

Junctions are values. They don't "hold" anything. Can a junction have values of different types? Yes.


If evaluation of one value of a junction causes an error, is $! now a junction as well?

See Larry's response. My response it that, by default, if:

        foo(2)

and

        foo(3)

each throw an exception, then:

        foo(1|2|3);

throws an (single, non-junctive) exception. Which exception gets thrown is indeterminate, since the ordering of a junction, and hence of the autothreading of a junction, is indeterminate.

Damian

Reply via email to