For non-flat types (where values may be partially defined, rather than
necessarily bottom or fully defined) and information merging, see the
|A bottom value, allowing no information out. A left- and right-
identity for unamb. At the top level, evaluating bottom results in
the message Exception: thread blocked indefinitely.
|Unambiguous choice operator. Equivalent to the ambiguous choice
operator, but with arguments restricted to be equal where not bottom,
so that the choice doesn't matter. See also amb.
|Yield a value if a condition is true. Otherwise wait forever.
|The value of agreeing values (or hang)
|Never yield an answer. Like undefined or 'error whatever', but
don't raise an error, and don't consume computational resources.
|Ambiguous choice operator. Yield either value. Evaluates in
separate threads and picks whichever finishes first. See also
unamb and race.
|Race two actions against each other in separate threads, and pick
whichever finishes first. See also amb. Thanks to Spencer Janssen
for this simple version.
|Some useful special applications of amb
|parCommute :: (a -> a -> b) -> a -> a -> b||Source|
|Turn a binary commutative operation into that tries both orders in
parallel. Useful when there are special cases that don't require
evaluating both arguments. For non-flat types and information merging,
see parCommute in the lub package.
|Produced by Haddock version 2.4.2|