Dan Sugalski wrote:
We're definitely going to need to nail the semantics down. Would one thread throwing an exception require all the threads being aborted, for example?
I would imagine so. You can't reasonably build a junction out of values that weren't successfully created. If you write:
$var = die(); you get an exception thrown. Why should it be any different if the rvalue was trying to assume other non-exceptional values as well: $var = foo() | bar() | die(); The whole point of junctions is "No Visible Parallelism": all the parallelism occurs inside the junction constructor. At the end of construction your single thread gets back a single scalar. And if the construction of that single scalar involved an exception, your single thread should get that exception. As for short-circuiting: why not? Junctions are inherently unordered, so there's no guarantee which state of the junction is processed first (whether they're being processed in parallel or series). Damian
