lub-0.0.2: least upper bounds -- information mergingSource codeContentsIndex
Least upper bounds
Some useful special applications of lub
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.
class HasLub a where
lub :: a -> a -> a
flatLub :: a -> a -> a
parCommute :: HasLub b => (a -> a -> b) -> a -> a -> b
ptimes :: (HasLub a, Num a) => a -> a -> a
Least upper bounds
class HasLub a whereSource
Types that support information merging (lub)
lub :: a -> a -> aSource
Least upper information bound. Combines information available from each argument. The arguments must be consistent, i.e., must have a common upper bound.
show/hide Instances
flatLub :: a -> a -> aSource

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 -> bSource

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.

ptimes :: (HasLub a, Num a) => a -> a -> aSource
Multiplication optimized for either argument being zero or one, where the other might be expensive/delayed.
Produced by Haddock version 2.3.0