ChasingBottoms-1.2.2: docs/Test-ChasingBottoms-SemanticOrd.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--Rendered using the Haskell Html Library v0.2-->
<HTML
><HEAD
><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
><TITLE
>Test.ChasingBottoms.SemanticOrd</TITLE
><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
><SCRIPT SRC="haddock.js" TYPE="text/javascript"
></SCRIPT
></HEAD
><BODY
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="topbar"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD
><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
></TD
><TD CLASS="title"
>Chasing Bottoms</TD
><TD CLASS="topbut"
><A HREF="index.html"
>Contents</A
></TD
><TD CLASS="topbut"
><A HREF="doc-index.html"
>Index</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="modulebar"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD
><FONT SIZE="6"
>Test.ChasingBottoms.SemanticOrd</FONT
></TD
><TD ALIGN="right"
><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="infohead"
>Portability</TD
><TD CLASS="infoval"
>non-portable (GHC-specific)</TD
></TR
><TR
><TD CLASS="infohead"
>Stability</TD
><TD CLASS="infoval"
>experimental</TD
></TR
><TR
><TD CLASS="infohead"
>Maintainer</TD
><TD CLASS="infoval"
>http://www.cs.chalmers.se/~nad/</TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Description</TD
></TR
><TR
><TD CLASS="doc"
><P
>Generic semantic equality and order. The semantic order referred
to is that of a typical CPO for Haskell types, where e.g. <TT
>(<TT
><A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Bool.html#v%3ATrue"
>True</A
></TT
>,
<TT
><A HREF="Test-ChasingBottoms-IsBottom.html#v%3Abottom"
>bottom</A
></TT
>) <TT
><A HREF="Test-ChasingBottoms-SemanticOrd.html#v%3A%3C%3D%21"
><=!</A
></TT
> (<TT
><A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Bool.html#v%3ATrue"
>True</A
></TT
>, <TT
><A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Bool.html#v%3AFalse"
>False</A
></TT
>)</TT
>, but where <TT
>(<TT
><A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Bool.html#v%3ATrue"
>True</A
></TT
>, <TT
><A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Bool.html#v%3ATrue"
>True</A
></TT
>)</TT
>
and <TT
>(<TT
><A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Bool.html#v%3ATrue"
>True</A
></TT
>, <TT
><A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Bool.html#v%3AFalse"
>False</A
></TT
>)</TT
> are incomparable.
</P
><P
>The implementation is based on <TT
><A HREF="Test-ChasingBottoms-IsBottom.html#v%3AisBottom"
>isBottom</A
></TT
>, and has the same
limitations. Note that non-bottom functions are not handled by any
of the functions described below.
</P
><P
>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.
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Synopsis</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
> <A HREF="#t%3ATweak"
>Tweak</A
> = <A HREF="#v%3ATweak"
>Tweak</A
> {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="recfield"
><A HREF="#v%3AapproxDepth"
>approxDepth</A
> :: (<A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="Test-ChasingBottoms-Nat.html#t%3ANat"
>Nat</A
>)</TD
></TR
><TR
><TD CLASS="recfield"
><A HREF="#v%3AtimeOutLimit"
>timeOutLimit</A
> :: (<A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Int.html#t%3AInt"
>Int</A
>)</TD
></TR
></TABLE
>}</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AnoTweak"
>noTweak</A
> :: <A HREF="Test-ChasingBottoms-SemanticOrd.html#t%3ATweak"
>Tweak</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>class</SPAN
> <A HREF="#t%3ASemanticEq"
>SemanticEq</A
> a <SPAN CLASS="keyword"
>where</SPAN
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="#v%3A%3D%3D%21"
>(==!)</A
> :: a -> a -> <A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3A%2F%3D%21"
>(/=!)</A
> :: a -> a -> <A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsemanticEq"
>semanticEq</A
> :: <A HREF="Test-ChasingBottoms-SemanticOrd.html#t%3ATweak"
>Tweak</A
> -> a -> a -> <A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>class</SPAN
> <A HREF="Test-ChasingBottoms-SemanticOrd.html#t%3ASemanticEq"
>SemanticEq</A
> a => <A HREF="#t%3ASemanticOrd"
>SemanticOrd</A
> a <SPAN CLASS="keyword"
>where</SPAN
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="#v%3A%3C%21"
>(<!)</A
> :: a -> a -> <A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3A%3C%3D%21"
>(<=!)</A
> :: a -> a -> <A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3A%3E%3D%21"
>(>=!)</A
> :: a -> a -> <A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3A%3E%21"
>(>!)</A
> :: a -> a -> <A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsemanticCompare"
>semanticCompare</A
> :: <A HREF="Test-ChasingBottoms-SemanticOrd.html#t%3ATweak"
>Tweak</A
> -> a -> a -> <A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Ord.html#t%3AOrdering"
>Ordering</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3A%5C%2F%21"
>(\/!)</A
> :: a -> a -> <A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> a</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3A%2F%5C%21"
>(/\!)</A
> :: a -> a -> a</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsemanticJoin"
>semanticJoin</A
> :: <A HREF="Test-ChasingBottoms-SemanticOrd.html#t%3ATweak"
>Tweak</A
> -> a -> a -> <A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> a</TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsemanticMeet"
>semanticMeet</A
> :: <A HREF="Test-ChasingBottoms-SemanticOrd.html#t%3ATweak"
>Tweak</A
> -> a -> a -> a</TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Documentation</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
> <A NAME="t%3ATweak"
></A
><B
>Tweak</B
> </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
>The behaviour of some of the functions below can be tweaked.
</TD
></TR
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v%3ATweak"
></A
><B
>Tweak</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="body" COLSPAN="2"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v%3AapproxDepth"
></A
><B
>approxDepth</B
> :: (<A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="Test-ChasingBottoms-Nat.html#t%3ANat"
>Nat</A
>)</TD
><TD CLASS="rdoc"
>If equal to <TT
><TT
><A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Maybe.html#v%3AJust"
>Just</A
></TT
> n</TT
>, an <TT
><TT
><A HREF="Test-ChasingBottoms-Approx.html#v%3AapproxAll"
>approxAll</A
></TT
> n</TT
> is performed on
all arguments before doing whatever the function is supposed to
be doing.
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v%3AtimeOutLimit"
></A
><B
>timeOutLimit</B
> :: (<A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Int.html#t%3AInt"
>Int</A
>)</TD
><TD CLASS="rdoc"
>If equal to <TT
><TT
><A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Maybe.html#v%3AJust"
>Just</A
></TT
> n</TT
>, then all computations that take more
than <TT
>n</TT
> seconds to complete are considered to be equal to
<TT
><A HREF="Test-ChasingBottoms-IsBottom.html#v%3Abottom"
>bottom</A
></TT
>. This functionality is implemented using
<TT
><A HREF="Test-ChasingBottoms-IsBottom.html#v%3AisBottomTimeOut"
>isBottomTimeOut</A
></TT
>.
</TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Tweak')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:Tweak" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Eq.html#t%3AEq"
>Eq</A
> <A HREF="Test-ChasingBottoms-SemanticOrd.html#t%3ATweak"
>Tweak</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Ord.html#t%3AOrd"
>Ord</A
> <A HREF="Test-ChasingBottoms-SemanticOrd.html#t%3ATweak"
>Tweak</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Text-Show.html#t%3AShow"
>Show</A
> <A HREF="Test-ChasingBottoms-SemanticOrd.html#t%3ATweak"
>Tweak</A
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v%3AnoTweak"
></A
><B
>noTweak</B
> :: <A HREF="Test-ChasingBottoms-SemanticOrd.html#t%3ATweak"
>Tweak</A
></TD
></TR
><TR
><TD CLASS="doc"
>No tweak (both fields are <TT
><A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Maybe.html#v%3ANothing"
>Nothing</A
></TT
>).
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>class</SPAN
> <A NAME="t%3ASemanticEq"
></A
><B
>SemanticEq</B
> a <SPAN CLASS="keyword"
>where</SPAN
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
><TT
><A HREF="Test-ChasingBottoms-SemanticOrd.html#t%3ASemanticEq"
>SemanticEq</A
></TT
> contains methods for testing whether two terms are
semantically equal.
</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="section4"
>Methods</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A NAME="v%3A%3D%3D%21"
></A
><B
>(==!)</B
> :: a -> a -> <A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v%3A%2F%3D%21"
></A
><B
>(/=!)</B
> :: a -> a -> <A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v%3AsemanticEq"
></A
><B
>semanticEq</B
> :: <A HREF="Test-ChasingBottoms-SemanticOrd.html#t%3ATweak"
>Tweak</A
> -> a -> a -> <A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:SemanticEq')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:SemanticEq" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Generics-Basics.html#t%3AData"
>Data</A
> a => <A HREF="Test-ChasingBottoms-SemanticOrd.html#t%3ASemanticEq"
>SemanticEq</A
> a</TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>class</SPAN
> <A HREF="Test-ChasingBottoms-SemanticOrd.html#t%3ASemanticEq"
>SemanticEq</A
> a => <A NAME="t%3ASemanticOrd"
></A
><B
>SemanticOrd</B
> a <SPAN CLASS="keyword"
>where</SPAN
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
><TT
><A HREF="Test-ChasingBottoms-SemanticOrd.html#t%3ASemanticOrd"
>SemanticOrd</A
></TT
> contains methods for testing whether two terms are
related according to the semantic domain ordering.
</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="section4"
>Methods</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A NAME="v%3A%3C%21"
></A
><B
>(<!)</B
> :: a -> a -> <A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v%3A%3C%3D%21"
></A
><B
>(<=!)</B
> :: a -> a -> <A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v%3A%3E%3D%21"
></A
><B
>(>=!)</B
> :: a -> a -> <A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v%3A%3E%21"
></A
><B
>(>!)</B
> :: a -> a -> <A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v%3AsemanticCompare"
></A
><B
>semanticCompare</B
> :: <A HREF="Test-ChasingBottoms-SemanticOrd.html#t%3ATweak"
>Tweak</A
> -> a -> a -> <A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Ord.html#t%3AOrdering"
>Ordering</A
></TD
></TR
><TR
><TD CLASS="doc"
><TT
><TT
><A HREF="Test-ChasingBottoms-SemanticOrd.html#v%3AsemanticCompare"
>semanticCompare</A
></TT
> tweak x y</TT
> returns <TT
><A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Maybe.html#v%3ANothing"
>Nothing</A
></TT
> if <TT
>x</TT
> and <TT
>y</TT
> are
incomparable, and <TT
><TT
><A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Maybe.html#v%3AJust"
>Just</A
></TT
> o</TT
> otherwise, where <TT
>o :: <TT
><A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Ord.html#t%3AOrdering"
>Ordering</A
></TT
></TT
>
represents the relation between <TT
>x</TT
> and <TT
>y</TT
>.
</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v%3A%5C%2F%21"
></A
><B
>(\/!)</B
> :: a -> a -> <A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v%3A%2F%5C%21"
></A
><B
>(/\!)</B
> :: a -> a -> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v%3AsemanticJoin"
></A
><B
>semanticJoin</B
> :: <A HREF="Test-ChasingBottoms-SemanticOrd.html#t%3ATweak"
>Tweak</A
> -> a -> a -> <A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v%3AsemanticMeet"
></A
><B
>semanticMeet</B
> :: <A HREF="Test-ChasingBottoms-SemanticOrd.html#t%3ATweak"
>Tweak</A
> -> a -> a -> a</TD
></TR
><TR
><TD CLASS="doc"
><TT
>x <TT
><A HREF="Test-ChasingBottoms-SemanticOrd.html#v%3A%5C%2F%21"
>\/!</A
></TT
> y</TT
> and <TT
>x <TT
><A HREF="Test-ChasingBottoms-SemanticOrd.html#v%3A%2F%5C%21"
>/\!</A
></TT
> y</TT
> compute the least upper and greatest
lower bounds, respectively, of <TT
>x</TT
> and <TT
>y</TT
> in the semantical
domain ordering. Note that the least upper bound may not always
exist.
This functionality was implemented just because it was
possible (and to provide analogues of <TT
><A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Ord.html#v%3Amax"
>max</A
></TT
> and <TT
><A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Ord.html#v%3Amin"
>min</A
></TT
> in the <TT
><A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Ord.html#t%3AOrd"
>Ord</A
></TT
>
class). If anyone finds any use for it, please let me know.
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:SemanticOrd')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:SemanticOrd" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="http://www.haskell.org/ghc/docs/latest/html/libraries/base-3.0.0.0/Data-Generics-Basics.html#t%3AData"
>Data</A
> a => <A HREF="Test-ChasingBottoms-SemanticOrd.html#t%3ASemanticOrd"
>SemanticOrd</A
> a</TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="botbar"
>Produced by <A HREF="http://www.haskell.org/haddock/"
>Haddock</A
> version 0.7</TD
></TR
></TABLE
></BODY
></HTML
>