Generic semantic equality and order. The semantic order referred
to is that of a typical CPO for Haskell types, where e.g. (True,
bottom) <=! (True, False), but where (True, True)
and (True, False) are incomparable.
The implementation is based on isBottom, and has the same
limitations. Note that non-bottom functions are not handled by any
of the functions described below.
One could imagine using QuickCheck for testing equality of
functions, but I have not managed to tweak the type system so that
it can be done transparently.
|The behaviour of some of the functions below can be tweaked.
|approxDepth :: Maybe Nat||If equal to Just n, an approxAll n is performed on
all arguments before doing whatever the function is supposed to
|timeOutLimit :: Maybe Int||If equal to Just n, then all computations that take more
than n seconds to complete are considered to be equal to
bottom. This functionality is implemented using
|No tweak (both fields are Nothing).
|class SemanticEq a where||Source|
|SemanticEq contains methods for testing whether two terms are
|SemanticOrd contains methods for testing whether two terms are
related according to the semantic domain ordering.
|semanticCompare tweak x y returns Nothing if x and y are
incomparable, and Just o otherwise, where o :: Ordering
represents the relation between x and y.
|x \/! y and x /\! y compute the least upper and greatest
lower bounds, respectively, of x and y in the semantical
domain ordering. Note that the least upper bound may not always
This functionality was implemented just because it was
possible (and to provide analogues of max and min in the Ord
class). If anyone finds any use for it, please let me know.
|Produced by Haddock version 2.4.2|