|
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, http://haskell.org/haskellwiki/Lub.
See unamb.cabal for the list of contributors.
|
|
Synopsis |
|
|
|
|
Purely functional unambiguous choice
|
|
|
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.
If anything kills unamb while it is evaluating (like nested unambs), it can
be retried later but, unlike most functions, work may be lost.
|
|
Some useful special applications of unamb
|
|
|
n-ary unamb
|
|
|
Yield a value if a condition is true. Otherwise undefined.
|
|
|
The value of agreeing values (or undefined/bottom)
|
|
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 maxBound short-circuit
|
|
|
Parallel multiplication with 0 short-circuit
|
|
Some related imperative tools
|
|
|
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.
|
|
Exception thrown if neither value evaluates
|
|
|
Use a particular exception as our representation for waiting forever.
| Instances | |
|
|
Produced by Haddock version 2.4.2 |