|
Data.Unamb | Stability | experimental | Maintainer | conal@conal.net |
|
|
|
|
|
Description |
Unambiguous choice
For non-flat types (where values may be partially defined, rather than
necessarily bottom or fully defined) and information merging, see the
'''lub''' package.
|
|
Synopsis |
|
|
|
Documentation |
|
|
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 undefined.
|
|
|
The value of agreeing values (or hang)
|
|
|
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.
|
|
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.
|
|
parIdentity :: Eq a => (a -> a -> a) -> a -> a -> a -> a | Source |
|
Binary operation with left & right identity element. For instance, '(*)'/1,
'(&&)'/'True', '(||)'/'False', 'min'/'maxBound', 'max'/'minBound'.
Tests either argument as identity, in parallel.
|
|
parAnnihilator :: Eq a => (a -> a -> a) -> a -> a -> a -> a | Source |
|
Binary operation with annihilator element. For instance, '(*)'/0,
'(&&)'/'False', '(||)'/'True', 'min'/'minBound', 'max'/'maxBound'.
Tests either argument as annihilator, in parallel.
|
|
|
Parallel or
|
|
|
Parallel and
|
|
|
Parallel min with minBound short-circuit
|
|
|
Parallel max with minBound short-circuit
|
|
|
Parallel multiplication with 0 short-circuit
|
|
Produced by Haddock version 2.4.2 |