|Compute least upper bound (lub) of two values, with respect to
information content. I.e., merge the information available in each.
For flat types (in which all values are either bottom or fully
defined), lub is equivalent to unamb.
|Least upper bounds
|Types that support information merging (lub)
|Least upper information bound. Combines information available from
each argument. The arguments must be consistent, i.e., must have a
common upper bound.
A lub for flat domains. Equivalent to unamb. Handy for defining
HasLub instances, e.g.,
instance HasLub Integer where lub = flatLub
|Some useful special applications of lub
|parCommute :: HasLub b => (a -> a -> b) -> a -> a -> b||Source|
Turn a binary commutative operation into that tries both orders in
parallel, lub-merging the results. Useful when there are special
cases that don't require evaluating both arguments.
Similar to parCommute, but uses lub instead of unamb.
|Multiplication optimized for either argument being zero or one, where
the other might be expensive/delayed.
|Produced by Haddock version 2.3.0|