<!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 >Prelude</TITLE ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" ><SCRIPT SRC="haddock-util.js" TYPE="text/javascript" ></SCRIPT ><SCRIPT TYPE="text/javascript" >window.onload = function () {setSynopsis("mini_Prelude.html")};</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" >base-4.1.0.0: Basic libraries</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" >Prelude</FONT ></TD ><TD ALIGN="right" ><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="infohead" >Portability</TD ><TD CLASS="infoval" >portable</TD ></TR ><TR ><TD CLASS="infohead" >Stability</TD ><TD CLASS="infoval" >stable</TD ></TR ><TR ><TD CLASS="infohead" >Maintainer</TD ><TD CLASS="infoval" >libraries@haskell.org</TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="section4" ><B >Contents</B ></TD ></TR ><TR ><TD ><DL ><DT ><A HREF="#1" >Standard types, classes and related functions </A ></DT ><DD ><DL ><DT ><A HREF="#2" >Basic data types </A ></DT ><DD ><DL ><DT ><A HREF="#3" >Tuples </A ></DT ></DL ></DD ><DT ><A HREF="#4" >Basic type classes </A ></DT ><DT ><A HREF="#5" >Numbers </A ></DT ><DD ><DL ><DT ><A HREF="#6" >Numeric types </A ></DT ><DT ><A HREF="#7" >Numeric type classes </A ></DT ><DT ><A HREF="#8" >Numeric functions </A ></DT ></DL ></DD ><DT ><A HREF="#9" >Monads and functors </A ></DT ><DT ><A HREF="#10" >Miscellaneous functions </A ></DT ></DL ></DD ><DT ><A HREF="#11" >List operations </A ></DT ><DD ><DL ><DT ><A HREF="#12" >Reducing lists (folds) </A ></DT ><DD ><DL ><DT ><A HREF="#13" >Special folds </A ></DT ></DL ></DD ><DT ><A HREF="#14" >Building lists </A ></DT ><DD ><DL ><DT ><A HREF="#15" >Scans </A ></DT ><DT ><A HREF="#16" >Infinite lists </A ></DT ></DL ></DD ><DT ><A HREF="#17" >Sublists </A ></DT ><DT ><A HREF="#18" >Searching lists </A ></DT ><DT ><A HREF="#19" >Zipping and unzipping lists </A ></DT ><DT ><A HREF="#20" >Functions on strings </A ></DT ></DL ></DD ><DT ><A HREF="#21" >Converting to and from <TT >String</TT > </A ></DT ><DD ><DL ><DT ><A HREF="#22" >Converting to <TT >String</TT > </A ></DT ><DT ><A HREF="#23" >Converting from <TT >String</TT > </A ></DT ></DL ></DD ><DT ><A HREF="#24" >Basic Input and output </A ></DT ><DD ><DL ><DT ><A HREF="#25" >Simple I/O operations </A ></DT ><DD ><DL ><DT ><A HREF="#26" >Output functions </A ></DT ><DT ><A HREF="#27" >Input functions </A ></DT ><DT ><A HREF="#28" >Files </A ></DT ></DL ></DD ><DT ><A HREF="#29" >Exception handling in the I/O monad </A ></DT ></DL ></DD ></DL ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Description</TD ></TR ><TR ><TD CLASS="doc" >The Prelude: a standard module imported by default into all Haskell modules. For more documentation, see the Haskell 98 Report <A HREF="http://www.haskell.org/onlinereport/" >http://www.haskell.org/onlinereport/</A >. </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" ><A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > (<A HREF="../ghc-prim/GHC-Bool.html#v%3AFalse" >False</A >, <A HREF="../ghc-prim/GHC-Bool.html#v%3ATrue" >True</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3A%26%26" >(&&)</A > :: <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3A%7C%7C" >(||)</A > :: <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Anot" >not</A > :: <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aotherwise" >otherwise</A > :: <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AMaybe" >Maybe</A > a </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" >= <A HREF="#v%3ANothing" >Nothing</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AJust" >Just</A > a</TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Amaybe" >maybe</A > :: b -> (a -> b) -> <A HREF="Prelude.html#t%3AMaybe" >Maybe</A > a -> b</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AEither" >Either</A > a b </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" >= <A HREF="#v%3ALeft" >Left</A > a</TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ARight" >Right</A > b</TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aeither" >either</A > :: (a -> c) -> (b -> c) -> <A HREF="Prelude.html#t%3AEither" >Either</A > a b -> c</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../ghc-prim/GHC-Ordering.html#t%3AOrdering" >Ordering</A > (<A HREF="../ghc-prim/GHC-Ordering.html#v%3ALT" >LT</A >, <A HREF="../ghc-prim/GHC-Ordering.html#v%3AEQ" >EQ</A >, <A HREF="../ghc-prim/GHC-Ordering.html#v%3AGT" >GT</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../ghc-prim/GHC-Types.html#t%3AChar" >Char</A > (<A HREF="../ghc-prim/GHC-Types.html#v%3AC%23" >C#</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3AString" >String</A > = [<A HREF="../ghc-prim/GHC-Types.html#t%3AChar" >Char</A >]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Afst" >fst</A > :: (a, b) -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Asnd" >snd</A > :: (a, b) -> b</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Acurry" >curry</A > :: ((a, b) -> c) -> a -> b -> c</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Auncurry" >uncurry</A > :: (a -> b -> c) -> (a, b) -> c</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A HREF="#t%3AEq" >Eq</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" >(==)</A > :: a -> a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3A%2F%3D" >(/=)</A > :: a -> a -> <A HREF="../ghc-prim/GHC-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="Prelude.html#t%3AEq" >Eq</A > a => <A HREF="#t%3AOrd" >Ord</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%3Acompare" >compare</A > :: a -> a -> <A HREF="../ghc-prim/GHC-Ordering.html#t%3AOrdering" >Ordering</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3A%3C" >(<)</A > :: a -> a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3A%3E%3D" >(>=)</A > :: a -> a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3A%3E" >(>)</A > :: a -> a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3A%3C%3D" >(<=)</A > :: a -> a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Amax" >max</A > :: a -> a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Amin" >min</A > :: a -> a -> a</TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A HREF="#t%3AEnum" >Enum</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%3Asucc" >succ</A > :: a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Apred" >pred</A > :: a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtoEnum" >toEnum</A > :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AfromEnum" >fromEnum</A > :: a -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AenumFrom" >enumFrom</A > :: a -> [a]</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AenumFromThen" >enumFromThen</A > :: a -> a -> [a]</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AenumFromTo" >enumFromTo</A > :: a -> a -> [a]</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AenumFromThenTo" >enumFromThenTo</A > :: a -> a -> a -> [a]</TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A HREF="#t%3ABounded" >Bounded</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%3AminBound" >minBound</A > :: a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmaxBound" >maxBound</A > :: a</TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > (<A HREF="../ghc-prim/GHC-Types.html#v%3AI%23" >I#</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A > (S#, J#)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../ghc-prim/GHC-Types.html#t%3AFloat" >Float</A > (<A HREF="../ghc-prim/GHC-Types.html#v%3AF%23" >F#</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../ghc-prim/GHC-Types.html#t%3ADouble" >Double</A > (<A HREF="../ghc-prim/GHC-Types.html#v%3AD%23" >D#</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3ARational" >Rational</A > = <A HREF="Data-Ratio.html#t%3ARatio" >Ratio</A > <A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > (<A HREF="Prelude.html#t%3AEq" >Eq</A > a, <A HREF="Prelude.html#t%3AShow" >Show</A > a) => <A HREF="#t%3ANum" >Num</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%2B" >(+)</A > :: a -> a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3A%2A" >(*)</A > :: a -> a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3A-" >(-)</A > :: a -> a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Anegate" >negate</A > :: a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aabs" >abs</A > :: a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Asignum" >signum</A > :: a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AfromInteger" >fromInteger</A > :: <A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A > -> a</TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > (<A HREF="Prelude.html#t%3ANum" >Num</A > a, <A HREF="Prelude.html#t%3AOrd" >Ord</A > a) => <A HREF="#t%3AReal" >Real</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%3AtoRational" >toRational</A > :: a -> <A HREF="Prelude.html#t%3ARational" >Rational</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > (<A HREF="Prelude.html#t%3AReal" >Real</A > a, <A HREF="Prelude.html#t%3AEnum" >Enum</A > a) => <A HREF="#t%3AIntegral" >Integral</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%3Aquot" >quot</A > :: a -> a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Arem" >rem</A > :: a -> a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Adiv" >div</A > :: a -> a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Amod" >mod</A > :: a -> a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AquotRem" >quotRem</A > :: a -> a -> (a, a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AdivMod" >divMod</A > :: a -> a -> (a, a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtoInteger" >toInteger</A > :: a -> <A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A HREF="Prelude.html#t%3ANum" >Num</A > a => <A HREF="#t%3AFractional" >Fractional</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%2F" >(/)</A > :: a -> a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Arecip" >recip</A > :: a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AfromRational" >fromRational</A > :: <A HREF="Prelude.html#t%3ARational" >Rational</A > -> a</TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A HREF="Prelude.html#t%3AFractional" >Fractional</A > a => <A HREF="#t%3AFloating" >Floating</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%3Api" >pi</A > :: a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aexp" >exp</A > :: a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Asqrt" >sqrt</A > :: a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Alog" >log</A > :: a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3A%2A%2A" >(**)</A > :: a -> a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AlogBase" >logBase</A > :: a -> a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Asin" >sin</A > :: a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Atan" >tan</A > :: a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Acos" >cos</A > :: a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aasin" >asin</A > :: a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aatan" >atan</A > :: a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aacos" >acos</A > :: a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Asinh" >sinh</A > :: a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Atanh" >tanh</A > :: a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Acosh" >cosh</A > :: a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aasinh" >asinh</A > :: a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aatanh" >atanh</A > :: a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aacosh" >acosh</A > :: a -> a</TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > (<A HREF="Prelude.html#t%3AReal" >Real</A > a, <A HREF="Prelude.html#t%3AFractional" >Fractional</A > a) => <A HREF="#t%3ARealFrac" >RealFrac</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%3AproperFraction" >properFraction</A > :: <A HREF="Prelude.html#t%3AIntegral" >Integral</A > b => a -> (b, a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Atruncate" >truncate</A > :: <A HREF="Prelude.html#t%3AIntegral" >Integral</A > b => a -> b</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Around" >round</A > :: <A HREF="Prelude.html#t%3AIntegral" >Integral</A > b => a -> b</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aceiling" >ceiling</A > :: <A HREF="Prelude.html#t%3AIntegral" >Integral</A > b => a -> b</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Afloor" >floor</A > :: <A HREF="Prelude.html#t%3AIntegral" >Integral</A > b => a -> b</TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > (<A HREF="Prelude.html#t%3ARealFrac" >RealFrac</A > a, <A HREF="Prelude.html#t%3AFloating" >Floating</A > a) => <A HREF="#t%3ARealFloat" >RealFloat</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%3AfloatRadix" >floatRadix</A > :: a -> <A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AfloatDigits" >floatDigits</A > :: a -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AfloatRange" >floatRange</A > :: a -> (<A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >, <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AdecodeFloat" >decodeFloat</A > :: a -> (<A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A >, <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AencodeFloat" >encodeFloat</A > :: <A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A > -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aexponent" >exponent</A > :: a -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Asignificand" >significand</A > :: a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AscaleFloat" >scaleFloat</A > :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> a -> a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisNaN" >isNaN</A > :: a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisInfinite" >isInfinite</A > :: a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisDenormalized" >isDenormalized</A > :: a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisNegativeZero" >isNegativeZero</A > :: a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisIEEE" >isIEEE</A > :: a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aatan2" >atan2</A > :: a -> a -> a</TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Asubtract" >subtract</A > :: <A HREF="Prelude.html#t%3ANum" >Num</A > a => a -> a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aeven" >even</A > :: <A HREF="Prelude.html#t%3AIntegral" >Integral</A > a => a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aodd" >odd</A > :: <A HREF="Prelude.html#t%3AIntegral" >Integral</A > a => a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Agcd" >gcd</A > :: <A HREF="Prelude.html#t%3AIntegral" >Integral</A > a => a -> a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Alcm" >lcm</A > :: <A HREF="Prelude.html#t%3AIntegral" >Integral</A > a => a -> a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3A%5E" >(^)</A > :: (<A HREF="Prelude.html#t%3ANum" >Num</A > a, <A HREF="Prelude.html#t%3AIntegral" >Integral</A > b) => a -> b -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3A%5E%5E" >(^^)</A > :: (<A HREF="Prelude.html#t%3AFractional" >Fractional</A > a, <A HREF="Prelude.html#t%3AIntegral" >Integral</A > b) => a -> b -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AfromIntegral" >fromIntegral</A > :: (<A HREF="Prelude.html#t%3AIntegral" >Integral</A > a, <A HREF="Prelude.html#t%3ANum" >Num</A > b) => a -> b</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ArealToFrac" >realToFrac</A > :: (<A HREF="Prelude.html#t%3AReal" >Real</A > a, <A HREF="Prelude.html#t%3AFractional" >Fractional</A > b) => a -> b</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A HREF="#t%3AMonad" >Monad</A > m <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%3E%3E%3D" >(>>=)</A > :: <SPAN CLASS="keyword" >forall</SPAN > a b. m a -> (a -> m b) -> m b</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3A%3E%3E" >(>>)</A > :: <SPAN CLASS="keyword" >forall</SPAN > a b. m a -> m b -> m b</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Areturn" >return</A > :: a -> m a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Afail" >fail</A > :: <A HREF="Prelude.html#t%3AString" >String</A > -> m a</TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A HREF="#t%3AFunctor" >Functor</A > f <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%3Afmap" >fmap</A > :: (a -> b) -> f a -> f b</TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmapM" >mapM</A > :: <A HREF="Prelude.html#t%3AMonad" >Monad</A > m => (a -> m b) -> [a] -> m [b]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmapM_" >mapM_</A > :: <A HREF="Prelude.html#t%3AMonad" >Monad</A > m => (a -> m b) -> [a] -> m <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Asequence" >sequence</A > :: <A HREF="Prelude.html#t%3AMonad" >Monad</A > m => [m a] -> m [a]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Asequence_" >sequence_</A > :: <A HREF="Prelude.html#t%3AMonad" >Monad</A > m => [m a] -> m <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3A%3D%3C%3C" >(=<<)</A > :: <A HREF="Prelude.html#t%3AMonad" >Monad</A > m => (a -> m b) -> m a -> m b</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aid" >id</A > :: a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aconst" >const</A > :: a -> b -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3A." >(.)</A > :: (b -> c) -> (a -> b) -> a -> c</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aflip" >flip</A > :: (a -> b -> c) -> b -> a -> c</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3A%24" >($)</A > :: (a -> b) -> a -> b</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Auntil" >until</A > :: (a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A >) -> (a -> a) -> a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AasTypeOf" >asTypeOf</A > :: a -> a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aerror" >error</A > :: [<A HREF="../ghc-prim/GHC-Types.html#t%3AChar" >Char</A >] -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aundefined" >undefined</A > :: a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../ghc-prim/GHC-Prim.html#v%3Aseq" >seq</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3A%24%21" >($!)</A > :: (a -> b) -> a -> b</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Amap" >map</A > :: (a -> b) -> [a] -> [b]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3A%2B%2B" >(++)</A > :: [a] -> [a] -> [a]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Afilter" >filter</A > :: (a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A >) -> [a] -> [a]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Ahead" >head</A > :: [a] -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Alast" >last</A > :: [a] -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Atail" >tail</A > :: [a] -> [a]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Ainit" >init</A > :: [a] -> [a]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Anull" >null</A > :: [a] -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Alength" >length</A > :: [a] -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3A%21%21" >(!!)</A > :: [a] -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Areverse" >reverse</A > :: [a] -> [a]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Afoldl" >foldl</A > :: (a -> b -> a) -> a -> [b] -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Afoldl1" >foldl1</A > :: (a -> a -> a) -> [a] -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Afoldr" >foldr</A > :: (a -> b -> b) -> b -> [a] -> b</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Afoldr1" >foldr1</A > :: (a -> a -> a) -> [a] -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aand" >and</A > :: [<A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A >] -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aor" >or</A > :: [<A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A >] -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aany" >any</A > :: (a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A >) -> [a] -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aall" >all</A > :: (a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A >) -> [a] -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Asum" >sum</A > :: <A HREF="Prelude.html#t%3ANum" >Num</A > a => [a] -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aproduct" >product</A > :: <A HREF="Prelude.html#t%3ANum" >Num</A > a => [a] -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aconcat" >concat</A > :: [[a]] -> [a]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AconcatMap" >concatMap</A > :: (a -> [b]) -> [a] -> [b]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Amaximum" >maximum</A > :: <A HREF="Prelude.html#t%3AOrd" >Ord</A > a => [a] -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aminimum" >minimum</A > :: <A HREF="Prelude.html#t%3AOrd" >Ord</A > a => [a] -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Ascanl" >scanl</A > :: (a -> b -> a) -> a -> [b] -> [a]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Ascanl1" >scanl1</A > :: (a -> a -> a) -> [a] -> [a]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Ascanr" >scanr</A > :: (a -> b -> b) -> b -> [a] -> [b]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Ascanr1" >scanr1</A > :: (a -> a -> a) -> [a] -> [a]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aiterate" >iterate</A > :: (a -> a) -> a -> [a]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Arepeat" >repeat</A > :: a -> [a]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Areplicate" >replicate</A > :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> a -> [a]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Acycle" >cycle</A > :: [a] -> [a]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Atake" >take</A > :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> [a] -> [a]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Adrop" >drop</A > :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> [a] -> [a]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsplitAt" >splitAt</A > :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> [a] -> ([a], [a])</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtakeWhile" >takeWhile</A > :: (a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A >) -> [a] -> [a]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AdropWhile" >dropWhile</A > :: (a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A >) -> [a] -> [a]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aspan" >span</A > :: (a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A >) -> [a] -> ([a], [a])</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Abreak" >break</A > :: (a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A >) -> [a] -> ([a], [a])</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aelem" >elem</A > :: <A HREF="Prelude.html#t%3AEq" >Eq</A > a => a -> [a] -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AnotElem" >notElem</A > :: <A HREF="Prelude.html#t%3AEq" >Eq</A > a => a -> [a] -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Alookup" >lookup</A > :: <A HREF="Prelude.html#t%3AEq" >Eq</A > a => a -> [(a, b)] -> <A HREF="Prelude.html#t%3AMaybe" >Maybe</A > b</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Azip" >zip</A > :: [a] -> [b] -> [(a, b)]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Azip3" >zip3</A > :: [a] -> [b] -> [c] -> [(a, b, c)]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AzipWith" >zipWith</A > :: (a -> b -> c) -> [a] -> [b] -> [c]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AzipWith3" >zipWith3</A > :: (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aunzip" >unzip</A > :: [(a, b)] -> ([a], [b])</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aunzip3" >unzip3</A > :: [(a, b, c)] -> ([a], [b], [c])</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Alines" >lines</A > :: <A HREF="Prelude.html#t%3AString" >String</A > -> [<A HREF="Prelude.html#t%3AString" >String</A >]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Awords" >words</A > :: <A HREF="Prelude.html#t%3AString" >String</A > -> [<A HREF="Prelude.html#t%3AString" >String</A >]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aunlines" >unlines</A > :: [<A HREF="Prelude.html#t%3AString" >String</A >] -> <A HREF="Prelude.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aunwords" >unwords</A > :: [<A HREF="Prelude.html#t%3AString" >String</A >] -> <A HREF="Prelude.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3AShowS" >ShowS</A > = <A HREF="Prelude.html#t%3AString" >String</A > -> <A HREF="Prelude.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A HREF="#t%3AShow" >Show</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%3AshowsPrec" >showsPrec</A > :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> a -> <A HREF="Prelude.html#t%3AShowS" >ShowS</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Ashow" >show</A > :: a -> <A HREF="Prelude.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AshowList" >showList</A > :: [a] -> <A HREF="Prelude.html#t%3AShowS" >ShowS</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Ashows" >shows</A > :: <A HREF="Prelude.html#t%3AShow" >Show</A > a => a -> <A HREF="Prelude.html#t%3AShowS" >ShowS</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AshowChar" >showChar</A > :: <A HREF="../ghc-prim/GHC-Types.html#t%3AChar" >Char</A > -> <A HREF="Prelude.html#t%3AShowS" >ShowS</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AshowString" >showString</A > :: <A HREF="Prelude.html#t%3AString" >String</A > -> <A HREF="Prelude.html#t%3AShowS" >ShowS</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AshowParen" >showParen</A > :: <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > -> <A HREF="Prelude.html#t%3AShowS" >ShowS</A > -> <A HREF="Prelude.html#t%3AShowS" >ShowS</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3AReadS" >ReadS</A > a = <A HREF="Prelude.html#t%3AString" >String</A > -> [(a, <A HREF="Prelude.html#t%3AString" >String</A >)]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A HREF="#t%3ARead" >Read</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%3AreadsPrec" >readsPrec</A > :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> <A HREF="Prelude.html#t%3AReadS" >ReadS</A > a</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AreadList" >readList</A > :: <A HREF="Prelude.html#t%3AReadS" >ReadS</A > [a]</TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Areads" >reads</A > :: <A HREF="Prelude.html#t%3ARead" >Read</A > a => <A HREF="Prelude.html#t%3AReadS" >ReadS</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AreadParen" >readParen</A > :: <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > -> <A HREF="Prelude.html#t%3AReadS" >ReadS</A > a -> <A HREF="Prelude.html#t%3AReadS" >ReadS</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aread" >read</A > :: <A HREF="Prelude.html#t%3ARead" >Read</A > a => <A HREF="Prelude.html#t%3AString" >String</A > -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Alex" >lex</A > :: <A HREF="Prelude.html#t%3AReadS" >ReadS</A > <A HREF="Prelude.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AIO" >IO</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AputChar" >putChar</A > :: <A HREF="../ghc-prim/GHC-Types.html#t%3AChar" >Char</A > -> <A HREF="Prelude.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AputStr" >putStr</A > :: <A HREF="Prelude.html#t%3AString" >String</A > -> <A HREF="Prelude.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AputStrLn" >putStrLn</A > :: <A HREF="Prelude.html#t%3AString" >String</A > -> <A HREF="Prelude.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aprint" >print</A > :: <A HREF="Prelude.html#t%3AShow" >Show</A > a => a -> <A HREF="Prelude.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AgetChar" >getChar</A > :: <A HREF="Prelude.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AgetLine" >getLine</A > :: <A HREF="Prelude.html#t%3AIO" >IO</A > <A HREF="Prelude.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AgetContents" >getContents</A > :: <A HREF="Prelude.html#t%3AIO" >IO</A > <A HREF="Prelude.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Ainteract" >interact</A > :: (<A HREF="Prelude.html#t%3AString" >String</A > -> <A HREF="Prelude.html#t%3AString" >String</A >) -> <A HREF="Prelude.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3AFilePath" >FilePath</A > = <A HREF="Prelude.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AreadFile" >readFile</A > :: <A HREF="Prelude.html#t%3AFilePath" >FilePath</A > -> <A HREF="Prelude.html#t%3AIO" >IO</A > <A HREF="Prelude.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AwriteFile" >writeFile</A > :: <A HREF="Prelude.html#t%3AFilePath" >FilePath</A > -> <A HREF="Prelude.html#t%3AString" >String</A > -> <A HREF="Prelude.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AappendFile" >appendFile</A > :: <A HREF="Prelude.html#t%3AFilePath" >FilePath</A > -> <A HREF="Prelude.html#t%3AString" >String</A > -> <A HREF="Prelude.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AreadIO" >readIO</A > :: <A HREF="Prelude.html#t%3ARead" >Read</A > a => <A HREF="Prelude.html#t%3AString" >String</A > -> <A HREF="Prelude.html#t%3AIO" >IO</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AreadLn" >readLn</A > :: <A HREF="Prelude.html#t%3ARead" >Read</A > a => <A HREF="Prelude.html#t%3AIO" >IO</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3AIOError" >IOError</A > = <A HREF="Control-Exception-Base.html#t%3AIOException" >IOException</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AioError" >ioError</A > :: <A HREF="Prelude.html#t%3AIOError" >IOError</A > -> <A HREF="Prelude.html#t%3AIO" >IO</A > a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AuserError" >userError</A > :: <A HREF="Prelude.html#t%3AString" >String</A > -> <A HREF="Prelude.html#t%3AIOError" >IOError</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Acatch" >catch</A > :: <A HREF="Prelude.html#t%3AIO" >IO</A > a -> (<A HREF="Prelude.html#t%3AIOError" >IOError</A > -> <A HREF="Prelude.html#t%3AIO" >IO</A > a) -> <A HREF="Prelude.html#t%3AIO" >IO</A > a</TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="1" ><A NAME="1" >Standard types, classes and related functions </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="2" ><A NAME="2" >Basic data types </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > (<A HREF="../ghc-prim/GHC-Bool.html#v%3AFalse" >False</A >, <A HREF="../ghc-prim/GHC-Bool.html#v%3ATrue" >True</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:&&" ><A NAME="v%3A%26%26" ></A ></A ><B >(&&)</B > :: <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" >Boolean "and" </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:||" ><A NAME="v%3A%7C%7C" ></A ></A ><B >(||)</B > :: <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" >Boolean "or" </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:not" ><A NAME="v%3Anot" ></A ></A ><B >not</B > :: <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" >Boolean "not" </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:otherwise" ><A NAME="v%3Aotherwise" ></A ></A ><B >otherwise</B > :: <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" ><P ><TT ><A HREF="Prelude.html#v%3Aotherwise" >otherwise</A ></TT > is defined as the value <TT ><A HREF="../ghc-prim/GHC-Bool.html#v%3ATrue" >True</A ></TT >. It helps to make guards more readable. eg. </P ><PRE > f x | x < 0 = ... | otherwise = ... </PRE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:Maybe" ><A NAME="t%3AMaybe" ></A ></A ><B >Maybe</B > a </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >The <TT ><A HREF="Prelude.html#t%3AMaybe" >Maybe</A ></TT > type encapsulates an optional value. A value of type <TT ><TT ><A HREF="Prelude.html#t%3AMaybe" >Maybe</A ></TT > a</TT > either contains a value of type <TT >a</TT > (represented as <TT ><TT ><A HREF="Prelude.html#v%3AJust" >Just</A ></TT > a</TT >), or it is empty (represented as <TT ><A HREF="Prelude.html#v%3ANothing" >Nothing</A ></TT >). Using <TT ><A HREF="Prelude.html#t%3AMaybe" >Maybe</A ></TT > is a good way to deal with errors or exceptional cases without resorting to drastic measures such as <TT ><A HREF="Prelude.html#v%3Aerror" >error</A ></TT >. </P ><P >The <TT ><A HREF="Prelude.html#t%3AMaybe" >Maybe</A ></TT > type is also a monad. It is a simple kind of error monad, where all errors are represented by <TT ><A HREF="Prelude.html#v%3ANothing" >Nothing</A ></TT >. A richer error monad can be built using the Data.Either.Either type. </P ></TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:Nothing" ><A NAME="v%3ANothing" ></A ></A ><B >Nothing</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:Just" ><A NAME="v%3AJust" ></A ></A ><B >Just</B > a</TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Maybe')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Maybe" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AMonad" >Monad</A > <A HREF="Prelude.html#t%3AMaybe" >Maybe</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFunctor" >Functor</A > <A HREF="Prelude.html#t%3AMaybe" >Maybe</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable1" >Typeable1</A > <A HREF="Prelude.html#t%3AMaybe" >Maybe</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Control-Monad-Fix.html#t%3AMonadFix" >MonadFix</A > <A HREF="Prelude.html#t%3AMaybe" >Maybe</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Control-Monad.html#t%3AMonadPlus" >MonadPlus</A > <A HREF="Prelude.html#t%3AMaybe" >Maybe</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Control-Applicative.html#t%3AAlternative" >Alternative</A > <A HREF="Prelude.html#t%3AMaybe" >Maybe</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Control-Applicative.html#t%3AApplicative" >Applicative</A > <A HREF="Prelude.html#t%3AMaybe" >Maybe</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Foldable.html#t%3AFoldable" >Foldable</A > <A HREF="Prelude.html#t%3AMaybe" >Maybe</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Traversable.html#t%3ATraversable" >Traversable</A > <A HREF="Prelude.html#t%3AMaybe" >Maybe</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > a => <A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="Prelude.html#t%3AMaybe" >Maybe</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Data.html#t%3AData" >Data</A > a => <A HREF="Data-Data.html#t%3AData" >Data</A > (<A HREF="Prelude.html#t%3AMaybe" >Maybe</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > a => <A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="Prelude.html#t%3AMaybe" >Maybe</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > a => <A HREF="Prelude.html#t%3ARead" >Read</A > (<A HREF="Prelude.html#t%3AMaybe" >Maybe</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > a => <A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="Prelude.html#t%3AMaybe" >Maybe</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Monoid.html#t%3AMonoid" >Monoid</A > a => <A HREF="Data-Monoid.html#t%3AMonoid" >Monoid</A > (<A HREF="Prelude.html#t%3AMaybe" >Maybe</A > a)</TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:maybe" ><A NAME="v%3Amaybe" ></A ></A ><B >maybe</B > :: b -> (a -> b) -> <A HREF="Prelude.html#t%3AMaybe" >Maybe</A > a -> b</TD ></TR ><TR ><TD CLASS="doc" >The <TT ><A HREF="Prelude.html#v%3Amaybe" >maybe</A ></TT > function takes a default value, a function, and a <TT ><A HREF="Prelude.html#t%3AMaybe" >Maybe</A ></TT > value. If the <TT ><A HREF="Prelude.html#t%3AMaybe" >Maybe</A ></TT > value is <TT ><A HREF="Prelude.html#v%3ANothing" >Nothing</A ></TT >, the function returns the default value. Otherwise, it applies the function to the value inside the <TT ><A HREF="Prelude.html#v%3AJust" >Just</A ></TT > and returns the result. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:Either" ><A NAME="t%3AEither" ></A ></A ><B >Either</B > a b </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >The <TT ><A HREF="Prelude.html#t%3AEither" >Either</A ></TT > type represents values with two possibilities: a value of type <TT ><TT ><A HREF="Prelude.html#t%3AEither" >Either</A ></TT > a b</TT > is either <TT ><TT ><A HREF="Prelude.html#v%3ALeft" >Left</A ></TT > a</TT > or <TT ><TT ><A HREF="Prelude.html#v%3ARight" >Right</A ></TT > b</TT >. </P ><P >The <TT ><A HREF="Prelude.html#t%3AEither" >Either</A ></TT > type is sometimes used to represent a value which is either correct or an error; by convention, the <TT ><A HREF="Prelude.html#v%3ALeft" >Left</A ></TT > constructor is used to hold an error value and the <TT ><A HREF="Prelude.html#v%3ARight" >Right</A ></TT > constructor is used to hold a correct value (mnemonic: "right" also means "correct"). </P ></TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:Left" ><A NAME="v%3ALeft" ></A ></A ><B >Left</B > a</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:Right" ><A NAME="v%3ARight" ></A ></A ><B >Right</B > b</TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Either')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Either" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable2" >Typeable2</A > <A HREF="Prelude.html#t%3AEither" >Either</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFunctor" >Functor</A > (<A HREF="Prelude.html#t%3AEither" >Either</A > a)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AEq" >Eq</A > a, <A HREF="Prelude.html#t%3AEq" >Eq</A > b) => <A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="Prelude.html#t%3AEither" >Either</A > a b)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Data-Data.html#t%3AData" >Data</A > a, <A HREF="Data-Data.html#t%3AData" >Data</A > b) => <A HREF="Data-Data.html#t%3AData" >Data</A > (<A HREF="Prelude.html#t%3AEither" >Either</A > a b)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AOrd" >Ord</A > a, <A HREF="Prelude.html#t%3AOrd" >Ord</A > b) => <A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="Prelude.html#t%3AEither" >Either</A > a b)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ARead" >Read</A > a, <A HREF="Prelude.html#t%3ARead" >Read</A > b) => <A HREF="Prelude.html#t%3ARead" >Read</A > (<A HREF="Prelude.html#t%3AEither" >Either</A > a b)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AShow" >Show</A > a, <A HREF="Prelude.html#t%3AShow" >Show</A > b) => <A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="Prelude.html#t%3AEither" >Either</A > a b)</TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:either" ><A NAME="v%3Aeither" ></A ></A ><B >either</B > :: (a -> c) -> (b -> c) -> <A HREF="Prelude.html#t%3AEither" >Either</A > a b -> c</TD ></TR ><TR ><TD CLASS="doc" >Case analysis for the <TT ><A HREF="Prelude.html#t%3AEither" >Either</A ></TT > type. If the value is <TT ><TT ><A HREF="Prelude.html#v%3ALeft" >Left</A ></TT > a</TT >, apply the first function to <TT >a</TT >; if it is <TT ><TT ><A HREF="Prelude.html#v%3ARight" >Right</A ></TT > b</TT >, apply the second function to <TT >b</TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../ghc-prim/GHC-Ordering.html#t%3AOrdering" >Ordering</A > (<A HREF="../ghc-prim/GHC-Ordering.html#v%3ALT" >LT</A >, <A HREF="../ghc-prim/GHC-Ordering.html#v%3AEQ" >EQ</A >, <A HREF="../ghc-prim/GHC-Ordering.html#v%3AGT" >GT</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../ghc-prim/GHC-Types.html#t%3AChar" >Char</A > (<A HREF="../ghc-prim/GHC-Types.html#v%3AC%23" >C#</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:String" ><A NAME="t%3AString" ></A ></A ><B >String</B > = [<A HREF="../ghc-prim/GHC-Types.html#t%3AChar" >Char</A >]</TD ></TR ><TR ><TD CLASS="doc" >A <TT ><A HREF="Prelude.html#t%3AString" >String</A ></TT > is a list of characters. String constants in Haskell are values of type <TT ><A HREF="Prelude.html#t%3AString" >String</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section3" ><A NAME="3" ><A NAME="3" >Tuples </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:fst" ><A NAME="v%3Afst" ></A ></A ><B >fst</B > :: (a, b) -> a</TD ></TR ><TR ><TD CLASS="doc" >Extract the first component of a pair. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:snd" ><A NAME="v%3Asnd" ></A ></A ><B >snd</B > :: (a, b) -> b</TD ></TR ><TR ><TD CLASS="doc" >Extract the second component of a pair. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:curry" ><A NAME="v%3Acurry" ></A ></A ><B >curry</B > :: ((a, b) -> c) -> a -> b -> c</TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Prelude.html#v%3Acurry" >curry</A ></TT > converts an uncurried function to a curried function. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:uncurry" ><A NAME="v%3Auncurry" ></A ></A ><B >uncurry</B > :: (a -> b -> c) -> (a, b) -> c</TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Prelude.html#v%3Auncurry" >uncurry</A ></TT > converts a curried function to a function on pairs. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="4" ><A NAME="4" >Basic type classes </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A NAME="t:Eq" ><A NAME="t%3AEq" ></A ></A ><B >Eq</B > a <SPAN CLASS="keyword" >where</SPAN ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >The <TT ><A HREF="Prelude.html#t%3AEq" >Eq</A ></TT > class defines equality (<TT ><A HREF="Prelude.html#v%3A%3D%3D" >==</A ></TT >) and inequality (<TT ><A HREF="Prelude.html#v%3A%2F%3D" >/=</A ></TT >). All the basic datatypes exported by the <A HREF="Prelude.html" >Prelude</A > are instances of <TT ><A HREF="Prelude.html#t%3AEq" >Eq</A ></TT >, and <TT ><A HREF="Prelude.html#t%3AEq" >Eq</A ></TT > may be derived for any datatype whose constituents are also instances of <TT ><A HREF="Prelude.html#t%3AEq" >Eq</A ></TT >. </P ><P >Minimal complete definition: either <TT ><A HREF="Prelude.html#v%3A%3D%3D" >==</A ></TT > or <TT ><A HREF="Prelude.html#v%3A%2F%3D" >/=</A ></TT >. </P ></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:==" ><A NAME="v%3A%3D%3D" ></A ></A ><B >(==)</B > :: a -> a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:/=" ><A NAME="v%3A%2F%3D" ></A ></A ><B >(/=)</B > :: a -> a -> <A HREF="../ghc-prim/GHC-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:Eq')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Eq" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="../ghc-prim/GHC-Types.html#t%3ADouble" >Double</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AFloat" >Float</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Data-Int.html#t%3AInt8" >Int8</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Data-Int.html#t%3AInt16" >Int16</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Data-Int.html#t%3AInt32" >Int32</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Data-Int.html#t%3AInt64" >Int64</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="../ghc-prim/GHC-Ordering.html#t%3AOrdering" >Ordering</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Data-Word.html#t%3AWord" >Word</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Data-Word.html#t%3AWord8" >Word8</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Data-Word.html#t%3AWord16" >Word16</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Data-Word.html#t%3AWord32" >Word32</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Data-Word.html#t%3AWord64" >Word64</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Data-Typeable.html#t%3ATyCon" >TyCon</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Control-Exception-Base.html#t%3AArithException" >ArithException</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Text-Read-Lex.html#t%3ALexeme" >Lexeme</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Foreign-C-Types.html#t%3ACUIntMax" >CUIntMax</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Foreign-C-Types.html#t%3ACIntMax" >CIntMax</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Foreign-C-Types.html#t%3ACUIntPtr" >CUIntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Foreign-C-Types.html#t%3ACIntPtr" >CIntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Foreign-C-Types.html#t%3ACTime" >CTime</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Foreign-C-Types.html#t%3ACClock" >CClock</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Foreign-C-Types.html#t%3ACSigAtomic" >CSigAtomic</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Foreign-C-Types.html#t%3ACWchar" >CWchar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Foreign-C-Types.html#t%3ACSize" >CSize</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Foreign-C-Types.html#t%3ACPtrdiff" >CPtrdiff</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Foreign-C-Types.html#t%3ACLDouble" >CLDouble</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Foreign-C-Types.html#t%3ACDouble" >CDouble</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Foreign-C-Types.html#t%3ACFloat" >CFloat</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Foreign-C-Types.html#t%3ACULLong" >CULLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Foreign-C-Types.html#t%3ACLLong" >CLLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Foreign-C-Types.html#t%3ACULong" >CULong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Foreign-C-Types.html#t%3ACLong" >CLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Foreign-C-Types.html#t%3ACUInt" >CUInt</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Foreign-C-Types.html#t%3ACInt" >CInt</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Foreign-C-Types.html#t%3ACUShort" >CUShort</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Foreign-C-Types.html#t%3ACShort" >CShort</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Foreign-C-Types.html#t%3ACUChar" >CUChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Foreign-C-Types.html#t%3ACSChar" >CSChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Foreign-C-Types.html#t%3ACChar" >CChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="System-IO.html#t%3AIOMode" >IOMode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="System-IO-Error.html#t%3AIOErrorType" >IOErrorType</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Control-Exception-Base.html#t%3AIOException" >IOException</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="System-Exit.html#t%3AExitCode" >ExitCode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Control-Exception-Base.html#t%3AArrayException" >ArrayException</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Control-Exception-Base.html#t%3AAsyncException" >AsyncException</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="System-IO.html#t%3ABufferMode" >BufferMode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > BufferState</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="System-IO.html#t%3AHandle" >Handle</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Data-Char.html#t%3AGeneralCategory" >GeneralCategory</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > Inserts</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > HashData</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > KeyPr</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > Key</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > Finalizers</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Foreign-Ptr.html#t%3AIntPtr" >IntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Foreign-Ptr.html#t%3AWordPtr" >WordPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Foreign-C-Error.html#t%3AErrno" >Errno</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="System-Posix-Types.html#t%3AFd" >Fd</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="System-Posix-Types.html#t%3ACRLim" >CRLim</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="System-Posix-Types.html#t%3ACTcflag" >CTcflag</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="System-Posix-Types.html#t%3ACSpeed" >CSpeed</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="System-Posix-Types.html#t%3ACCc" >CCc</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="System-Posix-Types.html#t%3ACUid" >CUid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="System-Posix-Types.html#t%3ACNlink" >CNlink</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="System-Posix-Types.html#t%3ACGid" >CGid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="System-Posix-Types.html#t%3ACSsize" >CSsize</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="System-Posix-Types.html#t%3ACPid" >CPid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="System-Posix-Types.html#t%3ACOff" >COff</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="System-Posix-Types.html#t%3ACMode" >CMode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="System-Posix-Types.html#t%3ACIno" >CIno</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="System-Posix-Types.html#t%3ACDev" >CDev</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > FDType</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="GHC-Conc.html#t%3AThreadStatus" >ThreadStatus</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="GHC-Conc.html#t%3ABlockReason" >BlockReason</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Control-Concurrent.html#t%3AThreadId" >ThreadId</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="System-IO.html#t%3ASeekMode" >SeekMode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="System-IO.html#t%3AHandlePosn" >HandlePosn</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Control-OldException.html#t%3AException" >Exception</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Data-Data.html#t%3AFixity" >Fixity</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Data-Data.html#t%3AConstrRep" >ConstrRep</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Data-Data.html#t%3ADataRep" >DataRep</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Data-Data.html#t%3AConstr" >Constr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Data-Monoid.html#t%3AAny" >Any</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Data-Monoid.html#t%3AAll" >All</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Data-Unique.html#t%3AUnique" >Unique</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > Timeout</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > <A HREF="Data-Version.html#t%3AVersion" >Version</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > a => <A HREF="Prelude.html#t%3AEq" >Eq</A > ([] a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > a => <A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="Data-Ratio.html#t%3ARatio" >Ratio</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="Foreign-StablePtr.html#t%3AStablePtr" >StablePtr</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="Foreign-Ptr.html#t%3APtr" >Ptr</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="Foreign-Ptr.html#t%3AFunPtr" >FunPtr</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > a => <A HREF="Prelude.html#t%3AEq" >Eq</A > ([::] a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > a => <A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="Prelude.html#t%3AMaybe" >Maybe</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="Data-IORef.html#t%3AIORef" >IORef</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="Control-Concurrent-MVar.html#t%3AMVar" >MVar</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="Foreign-ForeignPtr.html#t%3AForeignPtr" >ForeignPtr</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="GHC-Conc.html#t%3ATVar" >TVar</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > a => <A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="GHC-Exts.html#t%3ADown" >Down</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARealFloat" >RealFloat</A > a => <A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="Data-Complex.html#t%3AComplex" >Complex</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="Data-Fixed.html#t%3AFixed" >Fixed</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > a => <A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="Data-Monoid.html#t%3ALast" >Last</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > a => <A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="Data-Monoid.html#t%3AFirst" >First</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > a => <A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="Data-Monoid.html#t%3AProduct" >Product</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > a => <A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="Data-Monoid.html#t%3ASum" >Sum</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > a => <A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="Data-Monoid.html#t%3ADual" >Dual</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="System-Mem-StableName.html#t%3AStableName" >StableName</A > a)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AEq" >Eq</A > a, <A HREF="Prelude.html#t%3AEq" >Eq</A > b) => <A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="Prelude.html#t%3AEither" >Either</A > a b)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AEq" >Eq</A > a, <A HREF="Prelude.html#t%3AEq" >Eq</A > b) => <A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%29" >(,)</A > a b)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i, <A HREF="Prelude.html#t%3AEq" >Eq</A > e) => <A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="Data-STRef.html#t%3ASTRef" >STRef</A > s a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > (IOArray i e)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AEq" >Eq</A > a, <A HREF="Prelude.html#t%3AEq" >Eq</A > b, <A HREF="Prelude.html#t%3AEq" >Eq</A > c) => <A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%29" >(,,)</A > a b c)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="GHC-Arr.html#t%3ASTArray" >STArray</A > s i e)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AEq" >Eq</A > a, <A HREF="Prelude.html#t%3AEq" >Eq</A > b, <A HREF="Prelude.html#t%3AEq" >Eq</A > c, <A HREF="Prelude.html#t%3AEq" >Eq</A > d) => <A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%29" >(,,,)</A > a b c d)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AEq" >Eq</A > a, <A HREF="Prelude.html#t%3AEq" >Eq</A > b, <A HREF="Prelude.html#t%3AEq" >Eq</A > c, <A HREF="Prelude.html#t%3AEq" >Eq</A > d, <A HREF="Prelude.html#t%3AEq" >Eq</A > e) => <A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%29" >(,,,,)</A > a b c d e)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AEq" >Eq</A > a, <A HREF="Prelude.html#t%3AEq" >Eq</A > b, <A HREF="Prelude.html#t%3AEq" >Eq</A > c, <A HREF="Prelude.html#t%3AEq" >Eq</A > d, <A HREF="Prelude.html#t%3AEq" >Eq</A > e, <A HREF="Prelude.html#t%3AEq" >Eq</A > f) => <A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%29" >(,,,,,)</A > a b c d e f)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AEq" >Eq</A > a, <A HREF="Prelude.html#t%3AEq" >Eq</A > b, <A HREF="Prelude.html#t%3AEq" >Eq</A > c, <A HREF="Prelude.html#t%3AEq" >Eq</A > d, <A HREF="Prelude.html#t%3AEq" >Eq</A > e, <A HREF="Prelude.html#t%3AEq" >Eq</A > f, <A HREF="Prelude.html#t%3AEq" >Eq</A > g) => <A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%29" >(,,,,,,)</A > a b c d e f g)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AEq" >Eq</A > a, <A HREF="Prelude.html#t%3AEq" >Eq</A > b, <A HREF="Prelude.html#t%3AEq" >Eq</A > c, <A HREF="Prelude.html#t%3AEq" >Eq</A > d, <A HREF="Prelude.html#t%3AEq" >Eq</A > e, <A HREF="Prelude.html#t%3AEq" >Eq</A > f, <A HREF="Prelude.html#t%3AEq" >Eq</A > g, <A HREF="Prelude.html#t%3AEq" >Eq</A > h) => <A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,)</A > a b c d e f g h)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AEq" >Eq</A > a, <A HREF="Prelude.html#t%3AEq" >Eq</A > b, <A HREF="Prelude.html#t%3AEq" >Eq</A > c, <A HREF="Prelude.html#t%3AEq" >Eq</A > d, <A HREF="Prelude.html#t%3AEq" >Eq</A > e, <A HREF="Prelude.html#t%3AEq" >Eq</A > f, <A HREF="Prelude.html#t%3AEq" >Eq</A > g, <A HREF="Prelude.html#t%3AEq" >Eq</A > h, <A HREF="Prelude.html#t%3AEq" >Eq</A > i) => <A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,)</A > a b c d e f g h i)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AEq" >Eq</A > a, <A HREF="Prelude.html#t%3AEq" >Eq</A > b, <A HREF="Prelude.html#t%3AEq" >Eq</A > c, <A HREF="Prelude.html#t%3AEq" >Eq</A > d, <A HREF="Prelude.html#t%3AEq" >Eq</A > e, <A HREF="Prelude.html#t%3AEq" >Eq</A > f, <A HREF="Prelude.html#t%3AEq" >Eq</A > g, <A HREF="Prelude.html#t%3AEq" >Eq</A > h, <A HREF="Prelude.html#t%3AEq" >Eq</A > i, <A HREF="Prelude.html#t%3AEq" >Eq</A > j) => <A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,)</A > a b c d e f g h i j)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AEq" >Eq</A > a, <A HREF="Prelude.html#t%3AEq" >Eq</A > b, <A HREF="Prelude.html#t%3AEq" >Eq</A > c, <A HREF="Prelude.html#t%3AEq" >Eq</A > d, <A HREF="Prelude.html#t%3AEq" >Eq</A > e, <A HREF="Prelude.html#t%3AEq" >Eq</A > f, <A HREF="Prelude.html#t%3AEq" >Eq</A > g, <A HREF="Prelude.html#t%3AEq" >Eq</A > h, <A HREF="Prelude.html#t%3AEq" >Eq</A > i, <A HREF="Prelude.html#t%3AEq" >Eq</A > j, <A HREF="Prelude.html#t%3AEq" >Eq</A > k) => <A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,,)</A > a b c d e f g h i j k)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AEq" >Eq</A > a, <A HREF="Prelude.html#t%3AEq" >Eq</A > b, <A HREF="Prelude.html#t%3AEq" >Eq</A > c, <A HREF="Prelude.html#t%3AEq" >Eq</A > d, <A HREF="Prelude.html#t%3AEq" >Eq</A > e, <A HREF="Prelude.html#t%3AEq" >Eq</A > f, <A HREF="Prelude.html#t%3AEq" >Eq</A > g, <A HREF="Prelude.html#t%3AEq" >Eq</A > h, <A HREF="Prelude.html#t%3AEq" >Eq</A > i, <A HREF="Prelude.html#t%3AEq" >Eq</A > j, <A HREF="Prelude.html#t%3AEq" >Eq</A > k, <A HREF="Prelude.html#t%3AEq" >Eq</A > l) => <A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,,,)</A > a b c d e f g h i j k l)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AEq" >Eq</A > a, <A HREF="Prelude.html#t%3AEq" >Eq</A > b, <A HREF="Prelude.html#t%3AEq" >Eq</A > c, <A HREF="Prelude.html#t%3AEq" >Eq</A > d, <A HREF="Prelude.html#t%3AEq" >Eq</A > e, <A HREF="Prelude.html#t%3AEq" >Eq</A > f, <A HREF="Prelude.html#t%3AEq" >Eq</A > g, <A HREF="Prelude.html#t%3AEq" >Eq</A > h, <A HREF="Prelude.html#t%3AEq" >Eq</A > i, <A HREF="Prelude.html#t%3AEq" >Eq</A > j, <A HREF="Prelude.html#t%3AEq" >Eq</A > k, <A HREF="Prelude.html#t%3AEq" >Eq</A > l, <A HREF="Prelude.html#t%3AEq" >Eq</A > m) => <A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,,,,)</A > a b c d e f g h i j k l m)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AEq" >Eq</A > a, <A HREF="Prelude.html#t%3AEq" >Eq</A > b, <A HREF="Prelude.html#t%3AEq" >Eq</A > c, <A HREF="Prelude.html#t%3AEq" >Eq</A > d, <A HREF="Prelude.html#t%3AEq" >Eq</A > e, <A HREF="Prelude.html#t%3AEq" >Eq</A > f, <A HREF="Prelude.html#t%3AEq" >Eq</A > g, <A HREF="Prelude.html#t%3AEq" >Eq</A > h, <A HREF="Prelude.html#t%3AEq" >Eq</A > i, <A HREF="Prelude.html#t%3AEq" >Eq</A > j, <A HREF="Prelude.html#t%3AEq" >Eq</A > k, <A HREF="Prelude.html#t%3AEq" >Eq</A > l, <A HREF="Prelude.html#t%3AEq" >Eq</A > m, <A HREF="Prelude.html#t%3AEq" >Eq</A > n) => <A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,,,,,)</A > a b c d e f g h i j k l m n)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AEq" >Eq</A > a, <A HREF="Prelude.html#t%3AEq" >Eq</A > b, <A HREF="Prelude.html#t%3AEq" >Eq</A > c, <A HREF="Prelude.html#t%3AEq" >Eq</A > d, <A HREF="Prelude.html#t%3AEq" >Eq</A > e, <A HREF="Prelude.html#t%3AEq" >Eq</A > f, <A HREF="Prelude.html#t%3AEq" >Eq</A > g, <A HREF="Prelude.html#t%3AEq" >Eq</A > h, <A HREF="Prelude.html#t%3AEq" >Eq</A > i, <A HREF="Prelude.html#t%3AEq" >Eq</A > j, <A HREF="Prelude.html#t%3AEq" >Eq</A > k, <A HREF="Prelude.html#t%3AEq" >Eq</A > l, <A HREF="Prelude.html#t%3AEq" >Eq</A > m, <A HREF="Prelude.html#t%3AEq" >Eq</A > n, <A HREF="Prelude.html#t%3AEq" >Eq</A > o) => <A HREF="Prelude.html#t%3AEq" >Eq</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,,,,,,)</A > a b c d e f g h i j k l m n o)</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="Prelude.html#t%3AEq" >Eq</A > a => <A NAME="t:Ord" ><A NAME="t%3AOrd" ></A ></A ><B >Ord</B > a <SPAN CLASS="keyword" >where</SPAN ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >The <TT ><A HREF="Prelude.html#t%3AOrd" >Ord</A ></TT > class is used for totally ordered datatypes. </P ><P >Instances of <TT ><A HREF="Prelude.html#t%3AOrd" >Ord</A ></TT > can be derived for any user-defined datatype whose constituent types are in <TT ><A HREF="Prelude.html#t%3AOrd" >Ord</A ></TT >. The declared order of the constructors in the data declaration determines the ordering in derived <TT ><A HREF="Prelude.html#t%3AOrd" >Ord</A ></TT > instances. The <TT ><A HREF="../ghc-prim/GHC-Ordering.html#t%3AOrdering" >Ordering</A ></TT > datatype allows a single comparison to determine the precise ordering of two objects. </P ><P >Minimal complete definition: either <TT ><A HREF="Prelude.html#v%3Acompare" >compare</A ></TT > or <TT ><A HREF="Prelude.html#v%3A%3C%3D" ><=</A ></TT >. Using <TT ><A HREF="Prelude.html#v%3Acompare" >compare</A ></TT > can be more efficient for complex types. </P ></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:compare" ><A NAME="v%3Acompare" ></A ></A ><B >compare</B > :: a -> a -> <A HREF="../ghc-prim/GHC-Ordering.html#t%3AOrdering" >Ordering</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:<" ><A NAME="v%3A%3C" ></A ></A ><B >(<)</B > :: a -> a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:>=" ><A NAME="v%3A%3E%3D" ></A ></A ><B >(>=)</B > :: a -> a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:>" ><A NAME="v%3A%3E" ></A ></A ><B >(>)</B > :: a -> a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:<=" ><A NAME="v%3A%3C%3D" ></A ></A ><B >(<=)</B > :: a -> a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:max" ><A NAME="v%3Amax" ></A ></A ><B >max</B > :: a -> a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:min" ><A NAME="v%3Amin" ></A ></A ><B >min</B > :: a -> a -> 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:Ord')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Ord" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="../ghc-prim/GHC-Types.html#t%3ADouble" >Double</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AFloat" >Float</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Data-Int.html#t%3AInt8" >Int8</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Data-Int.html#t%3AInt16" >Int16</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Data-Int.html#t%3AInt32" >Int32</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Data-Int.html#t%3AInt64" >Int64</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="../ghc-prim/GHC-Ordering.html#t%3AOrdering" >Ordering</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Data-Word.html#t%3AWord" >Word</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Data-Word.html#t%3AWord8" >Word8</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Data-Word.html#t%3AWord16" >Word16</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Data-Word.html#t%3AWord32" >Word32</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Data-Word.html#t%3AWord64" >Word64</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Control-Exception-Base.html#t%3AArithException" >ArithException</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Foreign-C-Types.html#t%3ACUIntMax" >CUIntMax</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Foreign-C-Types.html#t%3ACIntMax" >CIntMax</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Foreign-C-Types.html#t%3ACUIntPtr" >CUIntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Foreign-C-Types.html#t%3ACIntPtr" >CIntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Foreign-C-Types.html#t%3ACTime" >CTime</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Foreign-C-Types.html#t%3ACClock" >CClock</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Foreign-C-Types.html#t%3ACSigAtomic" >CSigAtomic</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Foreign-C-Types.html#t%3ACWchar" >CWchar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Foreign-C-Types.html#t%3ACSize" >CSize</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Foreign-C-Types.html#t%3ACPtrdiff" >CPtrdiff</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Foreign-C-Types.html#t%3ACLDouble" >CLDouble</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Foreign-C-Types.html#t%3ACDouble" >CDouble</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Foreign-C-Types.html#t%3ACFloat" >CFloat</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Foreign-C-Types.html#t%3ACULLong" >CULLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Foreign-C-Types.html#t%3ACLLong" >CLLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Foreign-C-Types.html#t%3ACULong" >CULong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Foreign-C-Types.html#t%3ACLong" >CLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Foreign-C-Types.html#t%3ACUInt" >CUInt</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Foreign-C-Types.html#t%3ACInt" >CInt</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Foreign-C-Types.html#t%3ACUShort" >CUShort</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Foreign-C-Types.html#t%3ACShort" >CShort</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Foreign-C-Types.html#t%3ACUChar" >CUChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Foreign-C-Types.html#t%3ACSChar" >CSChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Foreign-C-Types.html#t%3ACChar" >CChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="System-IO.html#t%3AIOMode" >IOMode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="System-Exit.html#t%3AExitCode" >ExitCode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Control-Exception-Base.html#t%3AArrayException" >ArrayException</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Control-Exception-Base.html#t%3AAsyncException" >AsyncException</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="System-IO.html#t%3ABufferMode" >BufferMode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Data-Char.html#t%3AGeneralCategory" >GeneralCategory</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Foreign-Ptr.html#t%3AIntPtr" >IntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Foreign-Ptr.html#t%3AWordPtr" >WordPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="System-Posix-Types.html#t%3AFd" >Fd</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="System-Posix-Types.html#t%3ACRLim" >CRLim</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="System-Posix-Types.html#t%3ACTcflag" >CTcflag</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="System-Posix-Types.html#t%3ACSpeed" >CSpeed</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="System-Posix-Types.html#t%3ACCc" >CCc</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="System-Posix-Types.html#t%3ACUid" >CUid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="System-Posix-Types.html#t%3ACNlink" >CNlink</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="System-Posix-Types.html#t%3ACGid" >CGid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="System-Posix-Types.html#t%3ACSsize" >CSsize</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="System-Posix-Types.html#t%3ACPid" >CPid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="System-Posix-Types.html#t%3ACOff" >COff</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="System-Posix-Types.html#t%3ACMode" >CMode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="System-Posix-Types.html#t%3ACIno" >CIno</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="System-Posix-Types.html#t%3ACDev" >CDev</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="GHC-Conc.html#t%3AThreadStatus" >ThreadStatus</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="GHC-Conc.html#t%3ABlockReason" >BlockReason</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Control-Concurrent.html#t%3AThreadId" >ThreadId</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="System-IO.html#t%3ASeekMode" >SeekMode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Data-Monoid.html#t%3AAny" >Any</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Data-Monoid.html#t%3AAll" >All</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Data-Unique.html#t%3AUnique" >Unique</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > <A HREF="Data-Version.html#t%3AVersion" >Version</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > a => <A HREF="Prelude.html#t%3AOrd" >Ord</A > ([] a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > a => <A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="Data-Ratio.html#t%3ARatio" >Ratio</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="Foreign-Ptr.html#t%3APtr" >Ptr</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="Foreign-Ptr.html#t%3AFunPtr" >FunPtr</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > a => <A HREF="Prelude.html#t%3AOrd" >Ord</A > ([::] a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > a => <A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="Prelude.html#t%3AMaybe" >Maybe</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="Foreign-ForeignPtr.html#t%3AForeignPtr" >ForeignPtr</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > a => <A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="GHC-Exts.html#t%3ADown" >Down</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="Data-Fixed.html#t%3AFixed" >Fixed</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > a => <A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="Data-Monoid.html#t%3ALast" >Last</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > a => <A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="Data-Monoid.html#t%3AFirst" >First</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > a => <A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="Data-Monoid.html#t%3AProduct" >Product</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > a => <A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="Data-Monoid.html#t%3ASum" >Sum</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AOrd" >Ord</A > a => <A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="Data-Monoid.html#t%3ADual" >Dual</A > a)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AOrd" >Ord</A > a, <A HREF="Prelude.html#t%3AOrd" >Ord</A > b) => <A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="Prelude.html#t%3AEither" >Either</A > a b)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AOrd" >Ord</A > a, <A HREF="Prelude.html#t%3AOrd" >Ord</A > b) => <A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%29" >(,)</A > a b)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i, <A HREF="Prelude.html#t%3AOrd" >Ord</A > e) => <A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="GHC-Arr.html#t%3AArray" >Array</A > i e)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AOrd" >Ord</A > a, <A HREF="Prelude.html#t%3AOrd" >Ord</A > b, <A HREF="Prelude.html#t%3AOrd" >Ord</A > c) => <A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%29" >(,,)</A > a b c)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AOrd" >Ord</A > a, <A HREF="Prelude.html#t%3AOrd" >Ord</A > b, <A HREF="Prelude.html#t%3AOrd" >Ord</A > c, <A HREF="Prelude.html#t%3AOrd" >Ord</A > d) => <A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%29" >(,,,)</A > a b c d)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AOrd" >Ord</A > a, <A HREF="Prelude.html#t%3AOrd" >Ord</A > b, <A HREF="Prelude.html#t%3AOrd" >Ord</A > c, <A HREF="Prelude.html#t%3AOrd" >Ord</A > d, <A HREF="Prelude.html#t%3AOrd" >Ord</A > e) => <A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%29" >(,,,,)</A > a b c d e)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AOrd" >Ord</A > a, <A HREF="Prelude.html#t%3AOrd" >Ord</A > b, <A HREF="Prelude.html#t%3AOrd" >Ord</A > c, <A HREF="Prelude.html#t%3AOrd" >Ord</A > d, <A HREF="Prelude.html#t%3AOrd" >Ord</A > e, <A HREF="Prelude.html#t%3AOrd" >Ord</A > f) => <A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%29" >(,,,,,)</A > a b c d e f)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AOrd" >Ord</A > a, <A HREF="Prelude.html#t%3AOrd" >Ord</A > b, <A HREF="Prelude.html#t%3AOrd" >Ord</A > c, <A HREF="Prelude.html#t%3AOrd" >Ord</A > d, <A HREF="Prelude.html#t%3AOrd" >Ord</A > e, <A HREF="Prelude.html#t%3AOrd" >Ord</A > f, <A HREF="Prelude.html#t%3AOrd" >Ord</A > g) => <A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%29" >(,,,,,,)</A > a b c d e f g)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AOrd" >Ord</A > a, <A HREF="Prelude.html#t%3AOrd" >Ord</A > b, <A HREF="Prelude.html#t%3AOrd" >Ord</A > c, <A HREF="Prelude.html#t%3AOrd" >Ord</A > d, <A HREF="Prelude.html#t%3AOrd" >Ord</A > e, <A HREF="Prelude.html#t%3AOrd" >Ord</A > f, <A HREF="Prelude.html#t%3AOrd" >Ord</A > g, <A HREF="Prelude.html#t%3AOrd" >Ord</A > h) => <A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,)</A > a b c d e f g h)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AOrd" >Ord</A > a, <A HREF="Prelude.html#t%3AOrd" >Ord</A > b, <A HREF="Prelude.html#t%3AOrd" >Ord</A > c, <A HREF="Prelude.html#t%3AOrd" >Ord</A > d, <A HREF="Prelude.html#t%3AOrd" >Ord</A > e, <A HREF="Prelude.html#t%3AOrd" >Ord</A > f, <A HREF="Prelude.html#t%3AOrd" >Ord</A > g, <A HREF="Prelude.html#t%3AOrd" >Ord</A > h, <A HREF="Prelude.html#t%3AOrd" >Ord</A > i) => <A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,)</A > a b c d e f g h i)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AOrd" >Ord</A > a, <A HREF="Prelude.html#t%3AOrd" >Ord</A > b, <A HREF="Prelude.html#t%3AOrd" >Ord</A > c, <A HREF="Prelude.html#t%3AOrd" >Ord</A > d, <A HREF="Prelude.html#t%3AOrd" >Ord</A > e, <A HREF="Prelude.html#t%3AOrd" >Ord</A > f, <A HREF="Prelude.html#t%3AOrd" >Ord</A > g, <A HREF="Prelude.html#t%3AOrd" >Ord</A > h, <A HREF="Prelude.html#t%3AOrd" >Ord</A > i, <A HREF="Prelude.html#t%3AOrd" >Ord</A > j) => <A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,)</A > a b c d e f g h i j)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AOrd" >Ord</A > a, <A HREF="Prelude.html#t%3AOrd" >Ord</A > b, <A HREF="Prelude.html#t%3AOrd" >Ord</A > c, <A HREF="Prelude.html#t%3AOrd" >Ord</A > d, <A HREF="Prelude.html#t%3AOrd" >Ord</A > e, <A HREF="Prelude.html#t%3AOrd" >Ord</A > f, <A HREF="Prelude.html#t%3AOrd" >Ord</A > g, <A HREF="Prelude.html#t%3AOrd" >Ord</A > h, <A HREF="Prelude.html#t%3AOrd" >Ord</A > i, <A HREF="Prelude.html#t%3AOrd" >Ord</A > j, <A HREF="Prelude.html#t%3AOrd" >Ord</A > k) => <A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,,)</A > a b c d e f g h i j k)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AOrd" >Ord</A > a, <A HREF="Prelude.html#t%3AOrd" >Ord</A > b, <A HREF="Prelude.html#t%3AOrd" >Ord</A > c, <A HREF="Prelude.html#t%3AOrd" >Ord</A > d, <A HREF="Prelude.html#t%3AOrd" >Ord</A > e, <A HREF="Prelude.html#t%3AOrd" >Ord</A > f, <A HREF="Prelude.html#t%3AOrd" >Ord</A > g, <A HREF="Prelude.html#t%3AOrd" >Ord</A > h, <A HREF="Prelude.html#t%3AOrd" >Ord</A > i, <A HREF="Prelude.html#t%3AOrd" >Ord</A > j, <A HREF="Prelude.html#t%3AOrd" >Ord</A > k, <A HREF="Prelude.html#t%3AOrd" >Ord</A > l) => <A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,,,)</A > a b c d e f g h i j k l)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AOrd" >Ord</A > a, <A HREF="Prelude.html#t%3AOrd" >Ord</A > b, <A HREF="Prelude.html#t%3AOrd" >Ord</A > c, <A HREF="Prelude.html#t%3AOrd" >Ord</A > d, <A HREF="Prelude.html#t%3AOrd" >Ord</A > e, <A HREF="Prelude.html#t%3AOrd" >Ord</A > f, <A HREF="Prelude.html#t%3AOrd" >Ord</A > g, <A HREF="Prelude.html#t%3AOrd" >Ord</A > h, <A HREF="Prelude.html#t%3AOrd" >Ord</A > i, <A HREF="Prelude.html#t%3AOrd" >Ord</A > j, <A HREF="Prelude.html#t%3AOrd" >Ord</A > k, <A HREF="Prelude.html#t%3AOrd" >Ord</A > l, <A HREF="Prelude.html#t%3AOrd" >Ord</A > m) => <A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,,,,)</A > a b c d e f g h i j k l m)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AOrd" >Ord</A > a, <A HREF="Prelude.html#t%3AOrd" >Ord</A > b, <A HREF="Prelude.html#t%3AOrd" >Ord</A > c, <A HREF="Prelude.html#t%3AOrd" >Ord</A > d, <A HREF="Prelude.html#t%3AOrd" >Ord</A > e, <A HREF="Prelude.html#t%3AOrd" >Ord</A > f, <A HREF="Prelude.html#t%3AOrd" >Ord</A > g, <A HREF="Prelude.html#t%3AOrd" >Ord</A > h, <A HREF="Prelude.html#t%3AOrd" >Ord</A > i, <A HREF="Prelude.html#t%3AOrd" >Ord</A > j, <A HREF="Prelude.html#t%3AOrd" >Ord</A > k, <A HREF="Prelude.html#t%3AOrd" >Ord</A > l, <A HREF="Prelude.html#t%3AOrd" >Ord</A > m, <A HREF="Prelude.html#t%3AOrd" >Ord</A > n) => <A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,,,,,)</A > a b c d e f g h i j k l m n)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AOrd" >Ord</A > a, <A HREF="Prelude.html#t%3AOrd" >Ord</A > b, <A HREF="Prelude.html#t%3AOrd" >Ord</A > c, <A HREF="Prelude.html#t%3AOrd" >Ord</A > d, <A HREF="Prelude.html#t%3AOrd" >Ord</A > e, <A HREF="Prelude.html#t%3AOrd" >Ord</A > f, <A HREF="Prelude.html#t%3AOrd" >Ord</A > g, <A HREF="Prelude.html#t%3AOrd" >Ord</A > h, <A HREF="Prelude.html#t%3AOrd" >Ord</A > i, <A HREF="Prelude.html#t%3AOrd" >Ord</A > j, <A HREF="Prelude.html#t%3AOrd" >Ord</A > k, <A HREF="Prelude.html#t%3AOrd" >Ord</A > l, <A HREF="Prelude.html#t%3AOrd" >Ord</A > m, <A HREF="Prelude.html#t%3AOrd" >Ord</A > n, <A HREF="Prelude.html#t%3AOrd" >Ord</A > o) => <A HREF="Prelude.html#t%3AOrd" >Ord</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,,,,,,)</A > a b c d e f g h i j k l m n o)</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 NAME="t:Enum" ><A NAME="t%3AEnum" ></A ></A ><B >Enum</B > a <SPAN CLASS="keyword" >where</SPAN ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >Class <TT ><A HREF="Prelude.html#t%3AEnum" >Enum</A ></TT > defines operations on sequentially ordered types. </P ><P >The <TT >enumFrom</TT >... methods are used in Haskell's translation of arithmetic sequences. </P ><P >Instances of <TT ><A HREF="Prelude.html#t%3AEnum" >Enum</A ></TT > may be derived for any enumeration type (types whose constructors have no fields). The nullary constructors are assumed to be numbered left-to-right by <TT ><A HREF="Prelude.html#v%3AfromEnum" >fromEnum</A ></TT > from <TT >0</TT > through <TT >n-1</TT >. See Chapter 10 of the <EM >Haskell Report</EM > for more details. </P ><P >For any type that is an instance of class <TT ><A HREF="Prelude.html#t%3ABounded" >Bounded</A ></TT > as well as <TT ><A HREF="Prelude.html#t%3AEnum" >Enum</A ></TT >, the following should hold: </P ><UL ><LI > The calls <TT ><TT ><A HREF="Prelude.html#v%3Asucc" >succ</A ></TT > <TT ><A HREF="Prelude.html#v%3AmaxBound" >maxBound</A ></TT ></TT > and <TT ><TT ><A HREF="Prelude.html#v%3Apred" >pred</A ></TT > <TT ><A HREF="Prelude.html#v%3AminBound" >minBound</A ></TT ></TT > should result in a runtime error. </LI ><LI > <TT ><A HREF="Prelude.html#v%3AfromEnum" >fromEnum</A ></TT > and <TT ><A HREF="Prelude.html#v%3AtoEnum" >toEnum</A ></TT > should give a runtime error if the result value is not representable in the result type. For example, <TT ><TT ><A HREF="Prelude.html#v%3AtoEnum" >toEnum</A ></TT > 7 :: <TT ><A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TT ></TT > is an error. </LI ><LI > <TT ><A HREF="Prelude.html#v%3AenumFrom" >enumFrom</A ></TT > and <TT ><A HREF="Prelude.html#v%3AenumFromThen" >enumFromThen</A ></TT > should be defined with an implicit bound, thus: </LI ></UL ><PRE > enumFrom x = enumFromTo x maxBound enumFromThen x y = enumFromThenTo x y bound where bound | fromEnum y >= fromEnum x = maxBound | otherwise = minBound </PRE ></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:succ" ><A NAME="v%3Asucc" ></A ></A ><B >succ</B > :: a -> a</TD ></TR ><TR ><TD CLASS="doc" >the successor of a value. For numeric types, <TT ><A HREF="Prelude.html#v%3Asucc" >succ</A ></TT > adds 1. </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:pred" ><A NAME="v%3Apred" ></A ></A ><B >pred</B > :: a -> a</TD ></TR ><TR ><TD CLASS="doc" >the predecessor of a value. For numeric types, <TT ><A HREF="Prelude.html#v%3Apred" >pred</A ></TT > subtracts 1. </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:toEnum" ><A NAME="v%3AtoEnum" ></A ></A ><B >toEnum</B > :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> a</TD ></TR ><TR ><TD CLASS="doc" >Convert from an <TT ><A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TT >. </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:fromEnum" ><A NAME="v%3AfromEnum" ></A ></A ><B >fromEnum</B > :: a -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="doc" >Convert to an <TT ><A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TT >. It is implementation-dependent what <TT ><A HREF="Prelude.html#v%3AfromEnum" >fromEnum</A ></TT > returns when applied to a value that is too large to fit in an <TT ><A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TT >. </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:enumFrom" ><A NAME="v%3AenumFrom" ></A ></A ><B >enumFrom</B > :: a -> [a]</TD ></TR ><TR ><TD CLASS="doc" >Used in Haskell's translation of <TT >[n..]</TT >. </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:enumFromThen" ><A NAME="v%3AenumFromThen" ></A ></A ><B >enumFromThen</B > :: a -> a -> [a]</TD ></TR ><TR ><TD CLASS="doc" >Used in Haskell's translation of <TT >[n,n'..]</TT >. </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:enumFromTo" ><A NAME="v%3AenumFromTo" ></A ></A ><B >enumFromTo</B > :: a -> a -> [a]</TD ></TR ><TR ><TD CLASS="doc" >Used in Haskell's translation of <TT >[n..m]</TT >. </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:enumFromThenTo" ><A NAME="v%3AenumFromThenTo" ></A ></A ><B >enumFromThenTo</B > :: a -> a -> a -> [a]</TD ></TR ><TR ><TD CLASS="doc" >Used in Haskell's translation of <TT >[n,n'..m]</TT >. </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:Enum')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Enum" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="../ghc-prim/GHC-Types.html#t%3ADouble" >Double</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AFloat" >Float</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Data-Int.html#t%3AInt8" >Int8</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Data-Int.html#t%3AInt16" >Int16</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Data-Int.html#t%3AInt32" >Int32</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Data-Int.html#t%3AInt64" >Int64</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="../ghc-prim/GHC-Ordering.html#t%3AOrdering" >Ordering</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Data-Word.html#t%3AWord" >Word</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Data-Word.html#t%3AWord8" >Word8</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Data-Word.html#t%3AWord16" >Word16</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Data-Word.html#t%3AWord32" >Word32</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Data-Word.html#t%3AWord64" >Word64</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Foreign-C-Types.html#t%3ACUIntMax" >CUIntMax</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Foreign-C-Types.html#t%3ACIntMax" >CIntMax</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Foreign-C-Types.html#t%3ACUIntPtr" >CUIntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Foreign-C-Types.html#t%3ACIntPtr" >CIntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Foreign-C-Types.html#t%3ACTime" >CTime</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Foreign-C-Types.html#t%3ACClock" >CClock</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Foreign-C-Types.html#t%3ACSigAtomic" >CSigAtomic</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Foreign-C-Types.html#t%3ACWchar" >CWchar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Foreign-C-Types.html#t%3ACSize" >CSize</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Foreign-C-Types.html#t%3ACPtrdiff" >CPtrdiff</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Foreign-C-Types.html#t%3ACLDouble" >CLDouble</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Foreign-C-Types.html#t%3ACDouble" >CDouble</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Foreign-C-Types.html#t%3ACFloat" >CFloat</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Foreign-C-Types.html#t%3ACULLong" >CULLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Foreign-C-Types.html#t%3ACLLong" >CLLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Foreign-C-Types.html#t%3ACULong" >CULong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Foreign-C-Types.html#t%3ACLong" >CLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Foreign-C-Types.html#t%3ACUInt" >CUInt</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Foreign-C-Types.html#t%3ACInt" >CInt</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Foreign-C-Types.html#t%3ACUShort" >CUShort</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Foreign-C-Types.html#t%3ACShort" >CShort</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Foreign-C-Types.html#t%3ACUChar" >CUChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Foreign-C-Types.html#t%3ACSChar" >CSChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Foreign-C-Types.html#t%3ACChar" >CChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="System-IO.html#t%3AIOMode" >IOMode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Data-Char.html#t%3AGeneralCategory" >GeneralCategory</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Foreign-Ptr.html#t%3AIntPtr" >IntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="Foreign-Ptr.html#t%3AWordPtr" >WordPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="System-Posix-Types.html#t%3AFd" >Fd</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="System-Posix-Types.html#t%3ACRLim" >CRLim</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="System-Posix-Types.html#t%3ACTcflag" >CTcflag</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="System-Posix-Types.html#t%3ACSpeed" >CSpeed</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="System-Posix-Types.html#t%3ACCc" >CCc</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="System-Posix-Types.html#t%3ACUid" >CUid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="System-Posix-Types.html#t%3ACNlink" >CNlink</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="System-Posix-Types.html#t%3ACGid" >CGid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="System-Posix-Types.html#t%3ACSsize" >CSsize</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="System-Posix-Types.html#t%3ACPid" >CPid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="System-Posix-Types.html#t%3ACOff" >COff</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="System-Posix-Types.html#t%3ACMode" >CMode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="System-Posix-Types.html#t%3ACIno" >CIno</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="System-Posix-Types.html#t%3ACDev" >CDev</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > <A HREF="System-IO.html#t%3ASeekMode" >SeekMode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > a => <A HREF="Prelude.html#t%3AEnum" >Enum</A > (<A HREF="Data-Ratio.html#t%3ARatio" >Ratio</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AEnum" >Enum</A > (<A HREF="Data-Fixed.html#t%3AFixed" >Fixed</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 NAME="t:Bounded" ><A NAME="t%3ABounded" ></A ></A ><B >Bounded</B > a <SPAN CLASS="keyword" >where</SPAN ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >The <TT ><A HREF="Prelude.html#t%3ABounded" >Bounded</A ></TT > class is used to name the upper and lower limits of a type. <TT ><A HREF="Prelude.html#t%3AOrd" >Ord</A ></TT > is not a superclass of <TT ><A HREF="Prelude.html#t%3ABounded" >Bounded</A ></TT > since types that are not totally ordered may also have upper and lower bounds. </P ><P >The <TT ><A HREF="Prelude.html#t%3ABounded" >Bounded</A ></TT > class may be derived for any enumeration type; <TT ><A HREF="Prelude.html#v%3AminBound" >minBound</A ></TT > is the first constructor listed in the <TT >data</TT > declaration and <TT ><A HREF="Prelude.html#v%3AmaxBound" >maxBound</A ></TT > is the last. <TT ><A HREF="Prelude.html#t%3ABounded" >Bounded</A ></TT > may also be derived for single-constructor datatypes whose constituent types are in <TT ><A HREF="Prelude.html#t%3ABounded" >Bounded</A ></TT >. </P ></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:minBound" ><A NAME="v%3AminBound" ></A ></A ><B >minBound</B > :: a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:maxBound" ><A NAME="v%3AmaxBound" ></A ></A ><B >maxBound</B > :: 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:Bounded')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Bounded" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Data-Int.html#t%3AInt8" >Int8</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Data-Int.html#t%3AInt16" >Int16</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Data-Int.html#t%3AInt32" >Int32</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Data-Int.html#t%3AInt64" >Int64</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="../ghc-prim/GHC-Ordering.html#t%3AOrdering" >Ordering</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Data-Word.html#t%3AWord" >Word</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Data-Word.html#t%3AWord8" >Word8</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Data-Word.html#t%3AWord16" >Word16</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Data-Word.html#t%3AWord32" >Word32</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Data-Word.html#t%3AWord64" >Word64</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Foreign-C-Types.html#t%3ACUIntMax" >CUIntMax</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Foreign-C-Types.html#t%3ACIntMax" >CIntMax</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Foreign-C-Types.html#t%3ACUIntPtr" >CUIntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Foreign-C-Types.html#t%3ACIntPtr" >CIntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Foreign-C-Types.html#t%3ACSigAtomic" >CSigAtomic</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Foreign-C-Types.html#t%3ACWchar" >CWchar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Foreign-C-Types.html#t%3ACSize" >CSize</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Foreign-C-Types.html#t%3ACPtrdiff" >CPtrdiff</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Foreign-C-Types.html#t%3ACULLong" >CULLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Foreign-C-Types.html#t%3ACLLong" >CLLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Foreign-C-Types.html#t%3ACULong" >CULong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Foreign-C-Types.html#t%3ACLong" >CLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Foreign-C-Types.html#t%3ACUInt" >CUInt</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Foreign-C-Types.html#t%3ACInt" >CInt</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Foreign-C-Types.html#t%3ACUShort" >CUShort</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Foreign-C-Types.html#t%3ACShort" >CShort</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Foreign-C-Types.html#t%3ACUChar" >CUChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Foreign-C-Types.html#t%3ACSChar" >CSChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Foreign-C-Types.html#t%3ACChar" >CChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Data-Char.html#t%3AGeneralCategory" >GeneralCategory</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Foreign-Ptr.html#t%3AIntPtr" >IntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Foreign-Ptr.html#t%3AWordPtr" >WordPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="System-Posix-Types.html#t%3AFd" >Fd</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="System-Posix-Types.html#t%3ACRLim" >CRLim</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="System-Posix-Types.html#t%3ACTcflag" >CTcflag</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="System-Posix-Types.html#t%3ACUid" >CUid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="System-Posix-Types.html#t%3ACNlink" >CNlink</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="System-Posix-Types.html#t%3ACGid" >CGid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="System-Posix-Types.html#t%3ACSsize" >CSsize</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="System-Posix-Types.html#t%3ACPid" >CPid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="System-Posix-Types.html#t%3ACOff" >COff</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="System-Posix-Types.html#t%3ACMode" >CMode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="System-Posix-Types.html#t%3ACIno" >CIno</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Data-Monoid.html#t%3AAny" >Any</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > <A HREF="Data-Monoid.html#t%3AAll" >All</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > a => <A HREF="Prelude.html#t%3ABounded" >Bounded</A > (<A HREF="Data-Monoid.html#t%3AProduct" >Product</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > a => <A HREF="Prelude.html#t%3ABounded" >Bounded</A > (<A HREF="Data-Monoid.html#t%3ASum" >Sum</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ABounded" >Bounded</A > a => <A HREF="Prelude.html#t%3ABounded" >Bounded</A > (<A HREF="Data-Monoid.html#t%3ADual" >Dual</A > a)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ABounded" >Bounded</A > a, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > b) => <A HREF="Prelude.html#t%3ABounded" >Bounded</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%29" >(,)</A > a b)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ABounded" >Bounded</A > a, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > b, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > c) => <A HREF="Prelude.html#t%3ABounded" >Bounded</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%29" >(,,)</A > a b c)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ABounded" >Bounded</A > a, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > b, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > c, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > d) => <A HREF="Prelude.html#t%3ABounded" >Bounded</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%29" >(,,,)</A > a b c d)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ABounded" >Bounded</A > a, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > b, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > c, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > d, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > e) => <A HREF="Prelude.html#t%3ABounded" >Bounded</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%29" >(,,,,)</A > a b c d e)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ABounded" >Bounded</A > a, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > b, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > c, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > d, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > e, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > f) => <A HREF="Prelude.html#t%3ABounded" >Bounded</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%29" >(,,,,,)</A > a b c d e f)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ABounded" >Bounded</A > a, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > b, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > c, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > d, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > e, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > f, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > g) => <A HREF="Prelude.html#t%3ABounded" >Bounded</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%29" >(,,,,,,)</A > a b c d e f g)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ABounded" >Bounded</A > a, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > b, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > c, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > d, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > e, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > f, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > g, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > h) => <A HREF="Prelude.html#t%3ABounded" >Bounded</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,)</A > a b c d e f g h)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ABounded" >Bounded</A > a, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > b, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > c, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > d, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > e, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > f, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > g, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > h, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > i) => <A HREF="Prelude.html#t%3ABounded" >Bounded</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,)</A > a b c d e f g h i)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ABounded" >Bounded</A > a, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > b, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > c, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > d, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > e, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > f, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > g, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > h, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > i, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > j) => <A HREF="Prelude.html#t%3ABounded" >Bounded</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,)</A > a b c d e f g h i j)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ABounded" >Bounded</A > a, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > b, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > c, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > d, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > e, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > f, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > g, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > h, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > i, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > j, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > k) => <A HREF="Prelude.html#t%3ABounded" >Bounded</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,,)</A > a b c d e f g h i j k)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ABounded" >Bounded</A > a, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > b, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > c, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > d, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > e, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > f, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > g, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > h, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > i, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > j, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > k, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > l) => <A HREF="Prelude.html#t%3ABounded" >Bounded</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,,,)</A > a b c d e f g h i j k l)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ABounded" >Bounded</A > a, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > b, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > c, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > d, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > e, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > f, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > g, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > h, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > i, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > j, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > k, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > l, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > m) => <A HREF="Prelude.html#t%3ABounded" >Bounded</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,,,,)</A > a b c d e f g h i j k l m)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ABounded" >Bounded</A > a, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > b, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > c, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > d, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > e, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > f, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > g, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > h, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > i, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > j, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > k, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > l, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > m, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > n) => <A HREF="Prelude.html#t%3ABounded" >Bounded</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,,,,,)</A > a b c d e f g h i j k l m n)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ABounded" >Bounded</A > a, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > b, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > c, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > d, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > e, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > f, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > g, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > h, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > i, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > j, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > k, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > l, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > m, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > n, <A HREF="Prelude.html#t%3ABounded" >Bounded</A > o) => <A HREF="Prelude.html#t%3ABounded" >Bounded</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,,,,,,)</A > a b c d e f g h i j k l m n o)</TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="5" ><A NAME="5" >Numbers </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section3" ><A NAME="6" ><A NAME="6" >Numeric types </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > (<A HREF="../ghc-prim/GHC-Types.html#v%3AI%23" >I#</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A > (S#, J#)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../ghc-prim/GHC-Types.html#t%3AFloat" >Float</A > (<A HREF="../ghc-prim/GHC-Types.html#v%3AF%23" >F#</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../ghc-prim/GHC-Types.html#t%3ADouble" >Double</A > (<A HREF="../ghc-prim/GHC-Types.html#v%3AD%23" >D#</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:Rational" ><A NAME="t%3ARational" ></A ></A ><B >Rational</B > = <A HREF="Data-Ratio.html#t%3ARatio" >Ratio</A > <A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A ></TD ></TR ><TR ><TD CLASS="doc" >Arbitrary-precision rational numbers, represented as a ratio of two <TT ><A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A ></TT > values. A rational number may be constructed using the <TT ><A HREF="Data-Ratio.html#v%3A%25" >%</A ></TT > operator. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section3" ><A NAME="7" ><A NAME="7" >Numeric type classes </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > (<A HREF="Prelude.html#t%3AEq" >Eq</A > a, <A HREF="Prelude.html#t%3AShow" >Show</A > a) => <A NAME="t:Num" ><A NAME="t%3ANum" ></A ></A ><B >Num</B > a <SPAN CLASS="keyword" >where</SPAN ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >Basic numeric class. </P ><P >Minimal complete definition: all except <TT ><A HREF="Prelude.html#v%3Anegate" >negate</A ></TT > or <TT >(-)</TT > </P ></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:+" ><A NAME="v%3A%2B" ></A ></A ><B >(+)</B > :: a -> a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:*" ><A NAME="v%3A%2A" ></A ></A ><B >(*)</B > :: a -> a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:-" ><A NAME="v%3A-" ></A ></A ><B >(-)</B > :: a -> a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:negate" ><A NAME="v%3Anegate" ></A ></A ><B >negate</B > :: a -> a</TD ></TR ><TR ><TD CLASS="doc" >Unary negation. </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:abs" ><A NAME="v%3Aabs" ></A ></A ><B >abs</B > :: a -> a</TD ></TR ><TR ><TD CLASS="doc" >Absolute value. </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:signum" ><A NAME="v%3Asignum" ></A ></A ><B >signum</B > :: a -> a</TD ></TR ><TR ><TD CLASS="doc" ><P >Sign of a number. The functions <TT ><A HREF="Prelude.html#v%3Aabs" >abs</A ></TT > and <TT ><A HREF="Prelude.html#v%3Asignum" >signum</A ></TT > should satisfy the law: </P ><PRE > abs x * signum x == x </PRE ><P >For real numbers, the <TT ><A HREF="Prelude.html#v%3Asignum" >signum</A ></TT > is either <TT >-1</TT > (negative), <TT >0</TT > (zero) or <TT >1</TT > (positive). </P ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:fromInteger" ><A NAME="v%3AfromInteger" ></A ></A ><B >fromInteger</B > :: <A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A > -> a</TD ></TR ><TR ><TD CLASS="doc" >Conversion from an <TT ><A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A ></TT >. An integer literal represents the application of the function <TT ><A HREF="Prelude.html#v%3AfromInteger" >fromInteger</A ></TT > to the appropriate value of type <TT ><A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A ></TT >, so such literals have type <TT >(<TT ><A HREF="Prelude.html#t%3ANum" >Num</A ></TT > a) => a</TT >. </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:Num')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Num" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="../ghc-prim/GHC-Types.html#t%3ADouble" >Double</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AFloat" >Float</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Data-Int.html#t%3AInt8" >Int8</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Data-Int.html#t%3AInt16" >Int16</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Data-Int.html#t%3AInt32" >Int32</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Data-Int.html#t%3AInt64" >Int64</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Data-Word.html#t%3AWord" >Word</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Data-Word.html#t%3AWord8" >Word8</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Data-Word.html#t%3AWord16" >Word16</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Data-Word.html#t%3AWord32" >Word32</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Data-Word.html#t%3AWord64" >Word64</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Foreign-C-Types.html#t%3ACUIntMax" >CUIntMax</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Foreign-C-Types.html#t%3ACIntMax" >CIntMax</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Foreign-C-Types.html#t%3ACUIntPtr" >CUIntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Foreign-C-Types.html#t%3ACIntPtr" >CIntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Foreign-C-Types.html#t%3ACTime" >CTime</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Foreign-C-Types.html#t%3ACClock" >CClock</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Foreign-C-Types.html#t%3ACSigAtomic" >CSigAtomic</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Foreign-C-Types.html#t%3ACWchar" >CWchar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Foreign-C-Types.html#t%3ACSize" >CSize</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Foreign-C-Types.html#t%3ACPtrdiff" >CPtrdiff</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Foreign-C-Types.html#t%3ACLDouble" >CLDouble</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Foreign-C-Types.html#t%3ACDouble" >CDouble</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Foreign-C-Types.html#t%3ACFloat" >CFloat</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Foreign-C-Types.html#t%3ACULLong" >CULLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Foreign-C-Types.html#t%3ACLLong" >CLLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Foreign-C-Types.html#t%3ACULong" >CULong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Foreign-C-Types.html#t%3ACLong" >CLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Foreign-C-Types.html#t%3ACUInt" >CUInt</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Foreign-C-Types.html#t%3ACInt" >CInt</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Foreign-C-Types.html#t%3ACUShort" >CUShort</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Foreign-C-Types.html#t%3ACShort" >CShort</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Foreign-C-Types.html#t%3ACUChar" >CUChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Foreign-C-Types.html#t%3ACSChar" >CSChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Foreign-C-Types.html#t%3ACChar" >CChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Foreign-Ptr.html#t%3AIntPtr" >IntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="Foreign-Ptr.html#t%3AWordPtr" >WordPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="System-Posix-Types.html#t%3AFd" >Fd</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="System-Posix-Types.html#t%3ACRLim" >CRLim</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="System-Posix-Types.html#t%3ACTcflag" >CTcflag</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="System-Posix-Types.html#t%3ACSpeed" >CSpeed</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="System-Posix-Types.html#t%3ACCc" >CCc</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="System-Posix-Types.html#t%3ACUid" >CUid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="System-Posix-Types.html#t%3ACNlink" >CNlink</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="System-Posix-Types.html#t%3ACGid" >CGid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="System-Posix-Types.html#t%3ACSsize" >CSsize</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="System-Posix-Types.html#t%3ACPid" >CPid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="System-Posix-Types.html#t%3ACOff" >COff</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="System-Posix-Types.html#t%3ACMode" >CMode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="System-Posix-Types.html#t%3ACIno" >CIno</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ANum" >Num</A > <A HREF="System-Posix-Types.html#t%3ACDev" >CDev</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > a => <A HREF="Prelude.html#t%3ANum" >Num</A > (<A HREF="Data-Ratio.html#t%3ARatio" >Ratio</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARealFloat" >RealFloat</A > a => <A HREF="Prelude.html#t%3ANum" >Num</A > (<A HREF="Data-Complex.html#t%3AComplex" >Complex</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Fixed.html#t%3AHasResolution" >HasResolution</A > a => <A HREF="Prelude.html#t%3ANum" >Num</A > (<A HREF="Data-Fixed.html#t%3AFixed" >Fixed</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="Prelude.html#t%3ANum" >Num</A > a, <A HREF="Prelude.html#t%3AOrd" >Ord</A > a) => <A NAME="t:Real" ><A NAME="t%3AReal" ></A ></A ><B >Real</B > a <SPAN CLASS="keyword" >where</SPAN ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><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:toRational" ><A NAME="v%3AtoRational" ></A ></A ><B >toRational</B > :: a -> <A HREF="Prelude.html#t%3ARational" >Rational</A ></TD ></TR ><TR ><TD CLASS="doc" >the rational equivalent of its real argument with full precision </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:Real')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Real" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="../ghc-prim/GHC-Types.html#t%3ADouble" >Double</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AFloat" >Float</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Data-Int.html#t%3AInt8" >Int8</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Data-Int.html#t%3AInt16" >Int16</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Data-Int.html#t%3AInt32" >Int32</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Data-Int.html#t%3AInt64" >Int64</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Data-Word.html#t%3AWord" >Word</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Data-Word.html#t%3AWord8" >Word8</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Data-Word.html#t%3AWord16" >Word16</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Data-Word.html#t%3AWord32" >Word32</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Data-Word.html#t%3AWord64" >Word64</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Foreign-C-Types.html#t%3ACUIntMax" >CUIntMax</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Foreign-C-Types.html#t%3ACIntMax" >CIntMax</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Foreign-C-Types.html#t%3ACUIntPtr" >CUIntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Foreign-C-Types.html#t%3ACIntPtr" >CIntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Foreign-C-Types.html#t%3ACTime" >CTime</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Foreign-C-Types.html#t%3ACClock" >CClock</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Foreign-C-Types.html#t%3ACSigAtomic" >CSigAtomic</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Foreign-C-Types.html#t%3ACWchar" >CWchar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Foreign-C-Types.html#t%3ACSize" >CSize</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Foreign-C-Types.html#t%3ACPtrdiff" >CPtrdiff</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Foreign-C-Types.html#t%3ACLDouble" >CLDouble</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Foreign-C-Types.html#t%3ACDouble" >CDouble</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Foreign-C-Types.html#t%3ACFloat" >CFloat</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Foreign-C-Types.html#t%3ACULLong" >CULLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Foreign-C-Types.html#t%3ACLLong" >CLLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Foreign-C-Types.html#t%3ACULong" >CULong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Foreign-C-Types.html#t%3ACLong" >CLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Foreign-C-Types.html#t%3ACUInt" >CUInt</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Foreign-C-Types.html#t%3ACInt" >CInt</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Foreign-C-Types.html#t%3ACUShort" >CUShort</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Foreign-C-Types.html#t%3ACShort" >CShort</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Foreign-C-Types.html#t%3ACUChar" >CUChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Foreign-C-Types.html#t%3ACSChar" >CSChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Foreign-C-Types.html#t%3ACChar" >CChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Foreign-Ptr.html#t%3AIntPtr" >IntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="Foreign-Ptr.html#t%3AWordPtr" >WordPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="System-Posix-Types.html#t%3AFd" >Fd</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="System-Posix-Types.html#t%3ACRLim" >CRLim</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="System-Posix-Types.html#t%3ACTcflag" >CTcflag</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="System-Posix-Types.html#t%3ACSpeed" >CSpeed</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="System-Posix-Types.html#t%3ACCc" >CCc</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="System-Posix-Types.html#t%3ACUid" >CUid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="System-Posix-Types.html#t%3ACNlink" >CNlink</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="System-Posix-Types.html#t%3ACGid" >CGid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="System-Posix-Types.html#t%3ACSsize" >CSsize</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="System-Posix-Types.html#t%3ACPid" >CPid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="System-Posix-Types.html#t%3ACOff" >COff</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="System-Posix-Types.html#t%3ACMode" >CMode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="System-Posix-Types.html#t%3ACIno" >CIno</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AReal" >Real</A > <A HREF="System-Posix-Types.html#t%3ACDev" >CDev</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > a => <A HREF="Prelude.html#t%3AReal" >Real</A > (<A HREF="Data-Ratio.html#t%3ARatio" >Ratio</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Fixed.html#t%3AHasResolution" >HasResolution</A > a => <A HREF="Prelude.html#t%3AReal" >Real</A > (<A HREF="Data-Fixed.html#t%3AFixed" >Fixed</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="Prelude.html#t%3AReal" >Real</A > a, <A HREF="Prelude.html#t%3AEnum" >Enum</A > a) => <A NAME="t:Integral" ><A NAME="t%3AIntegral" ></A ></A ><B >Integral</B > a <SPAN CLASS="keyword" >where</SPAN ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >Integral numbers, supporting integer division. </P ><P >Minimal complete definition: <TT ><A HREF="Prelude.html#v%3AquotRem" >quotRem</A ></TT > and <TT ><A HREF="Prelude.html#v%3AtoInteger" >toInteger</A ></TT > </P ></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:quot" ><A NAME="v%3Aquot" ></A ></A ><B >quot</B > :: a -> a -> a</TD ></TR ><TR ><TD CLASS="doc" >integer division truncated toward zero </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:rem" ><A NAME="v%3Arem" ></A ></A ><B >rem</B > :: a -> a -> a</TD ></TR ><TR ><TD CLASS="doc" ><P >integer remainder, satisfying </P ><PRE > (x `quot` y)*y + (x `rem` y) == x </PRE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:div" ><A NAME="v%3Adiv" ></A ></A ><B >div</B > :: a -> a -> a</TD ></TR ><TR ><TD CLASS="doc" >integer division truncated toward negative infinity </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mod" ><A NAME="v%3Amod" ></A ></A ><B >mod</B > :: a -> a -> a</TD ></TR ><TR ><TD CLASS="doc" ><P >integer modulus, satisfying </P ><PRE > (x `div` y)*y + (x `mod` y) == x </PRE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:quotRem" ><A NAME="v%3AquotRem" ></A ></A ><B >quotRem</B > :: a -> a -> (a, a)</TD ></TR ><TR ><TD CLASS="doc" >simultaneous <TT ><A HREF="Prelude.html#v%3Aquot" >quot</A ></TT > and <TT ><A HREF="Prelude.html#v%3Arem" >rem</A ></TT > </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:divMod" ><A NAME="v%3AdivMod" ></A ></A ><B >divMod</B > :: a -> a -> (a, a)</TD ></TR ><TR ><TD CLASS="doc" >simultaneous <TT ><A HREF="Prelude.html#v%3Adiv" >div</A ></TT > and <TT ><A HREF="Prelude.html#v%3Amod" >mod</A ></TT > </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:toInteger" ><A NAME="v%3AtoInteger" ></A ></A ><B >toInteger</B > :: a -> <A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A ></TD ></TR ><TR ><TD CLASS="doc" >conversion to <TT ><A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A ></TT > </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:Integral')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Integral" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Data-Int.html#t%3AInt8" >Int8</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Data-Int.html#t%3AInt16" >Int16</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Data-Int.html#t%3AInt32" >Int32</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Data-Int.html#t%3AInt64" >Int64</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Data-Word.html#t%3AWord" >Word</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Data-Word.html#t%3AWord8" >Word8</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Data-Word.html#t%3AWord16" >Word16</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Data-Word.html#t%3AWord32" >Word32</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Data-Word.html#t%3AWord64" >Word64</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Foreign-C-Types.html#t%3ACUIntMax" >CUIntMax</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Foreign-C-Types.html#t%3ACIntMax" >CIntMax</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Foreign-C-Types.html#t%3ACUIntPtr" >CUIntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Foreign-C-Types.html#t%3ACIntPtr" >CIntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Foreign-C-Types.html#t%3ACSigAtomic" >CSigAtomic</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Foreign-C-Types.html#t%3ACWchar" >CWchar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Foreign-C-Types.html#t%3ACSize" >CSize</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Foreign-C-Types.html#t%3ACPtrdiff" >CPtrdiff</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Foreign-C-Types.html#t%3ACULLong" >CULLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Foreign-C-Types.html#t%3ACLLong" >CLLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Foreign-C-Types.html#t%3ACULong" >CULong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Foreign-C-Types.html#t%3ACLong" >CLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Foreign-C-Types.html#t%3ACUInt" >CUInt</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Foreign-C-Types.html#t%3ACInt" >CInt</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Foreign-C-Types.html#t%3ACUShort" >CUShort</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Foreign-C-Types.html#t%3ACShort" >CShort</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Foreign-C-Types.html#t%3ACUChar" >CUChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Foreign-C-Types.html#t%3ACSChar" >CSChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Foreign-C-Types.html#t%3ACChar" >CChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Foreign-Ptr.html#t%3AIntPtr" >IntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="Foreign-Ptr.html#t%3AWordPtr" >WordPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="System-Posix-Types.html#t%3AFd" >Fd</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="System-Posix-Types.html#t%3ACRLim" >CRLim</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="System-Posix-Types.html#t%3ACTcflag" >CTcflag</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="System-Posix-Types.html#t%3ACUid" >CUid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="System-Posix-Types.html#t%3ACNlink" >CNlink</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="System-Posix-Types.html#t%3ACGid" >CGid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="System-Posix-Types.html#t%3ACSsize" >CSsize</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="System-Posix-Types.html#t%3ACPid" >CPid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="System-Posix-Types.html#t%3ACOff" >COff</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="System-Posix-Types.html#t%3ACMode" >CMode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > <A HREF="System-Posix-Types.html#t%3ACIno" >CIno</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="Prelude.html#t%3ANum" >Num</A > a => <A NAME="t:Fractional" ><A NAME="t%3AFractional" ></A ></A ><B >Fractional</B > a <SPAN CLASS="keyword" >where</SPAN ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >Fractional numbers, supporting real division. </P ><P >Minimal complete definition: <TT ><A HREF="Prelude.html#v%3AfromRational" >fromRational</A ></TT > and (<TT ><A HREF="Prelude.html#v%3Arecip" >recip</A ></TT > or <TT >(<TT ><A HREF="Prelude.html#v%3A%2F" >/</A ></TT >)</TT >) </P ></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:/" ><A NAME="v%3A%2F" ></A ></A ><B >(/)</B > :: a -> a -> a</TD ></TR ><TR ><TD CLASS="doc" >fractional division </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:recip" ><A NAME="v%3Arecip" ></A ></A ><B >recip</B > :: a -> a</TD ></TR ><TR ><TD CLASS="doc" >reciprocal fraction </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:fromRational" ><A NAME="v%3AfromRational" ></A ></A ><B >fromRational</B > :: <A HREF="Prelude.html#t%3ARational" >Rational</A > -> a</TD ></TR ><TR ><TD CLASS="doc" >Conversion from a <TT ><A HREF="Prelude.html#t%3ARational" >Rational</A ></TT > (that is <TT ><TT ><A HREF="Data-Ratio.html#t%3ARatio" >Ratio</A ></TT > <TT ><A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A ></TT ></TT >). A floating literal stands for an application of <TT ><A HREF="Prelude.html#v%3AfromRational" >fromRational</A ></TT > to a value of type <TT ><A HREF="Prelude.html#t%3ARational" >Rational</A ></TT >, so such literals have type <TT >(<TT ><A HREF="Prelude.html#t%3AFractional" >Fractional</A ></TT > a) => a</TT >. </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:Fractional')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Fractional" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFractional" >Fractional</A > <A HREF="../ghc-prim/GHC-Types.html#t%3ADouble" >Double</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFractional" >Fractional</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AFloat" >Float</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFractional" >Fractional</A > <A HREF="Foreign-C-Types.html#t%3ACLDouble" >CLDouble</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFractional" >Fractional</A > <A HREF="Foreign-C-Types.html#t%3ACDouble" >CDouble</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFractional" >Fractional</A > <A HREF="Foreign-C-Types.html#t%3ACFloat" >CFloat</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > a => <A HREF="Prelude.html#t%3AFractional" >Fractional</A > (<A HREF="Data-Ratio.html#t%3ARatio" >Ratio</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARealFloat" >RealFloat</A > a => <A HREF="Prelude.html#t%3AFractional" >Fractional</A > (<A HREF="Data-Complex.html#t%3AComplex" >Complex</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Fixed.html#t%3AHasResolution" >HasResolution</A > a => <A HREF="Prelude.html#t%3AFractional" >Fractional</A > (<A HREF="Data-Fixed.html#t%3AFixed" >Fixed</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="Prelude.html#t%3AFractional" >Fractional</A > a => <A NAME="t:Floating" ><A NAME="t%3AFloating" ></A ></A ><B >Floating</B > a <SPAN CLASS="keyword" >where</SPAN ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >Trigonometric and hyperbolic functions and related functions. </P ><P >Minimal complete definition: <TT ><A HREF="Prelude.html#v%3Api" >pi</A ></TT >, <TT ><A HREF="Prelude.html#v%3Aexp" >exp</A ></TT >, <TT ><A HREF="Prelude.html#v%3Alog" >log</A ></TT >, <TT ><A HREF="Prelude.html#v%3Asin" >sin</A ></TT >, <TT ><A HREF="Prelude.html#v%3Acos" >cos</A ></TT >, <TT ><A HREF="Prelude.html#v%3Asinh" >sinh</A ></TT >, <TT ><A HREF="Prelude.html#v%3Acosh" >cosh</A ></TT >, <TT ><A HREF="Prelude.html#v%3Aasin" >asin</A ></TT >, <TT ><A HREF="Prelude.html#v%3Aacos" >acos</A ></TT >, <TT ><A HREF="Prelude.html#v%3Aatan" >atan</A ></TT >, <TT ><A HREF="Prelude.html#v%3Aasinh" >asinh</A ></TT >, <TT ><A HREF="Prelude.html#v%3Aacosh" >acosh</A ></TT > and <TT ><A HREF="Prelude.html#v%3Aatanh" >atanh</A ></TT > </P ></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:pi" ><A NAME="v%3Api" ></A ></A ><B >pi</B > :: a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:exp" ><A NAME="v%3Aexp" ></A ></A ><B >exp</B > :: a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:sqrt" ><A NAME="v%3Asqrt" ></A ></A ><B >sqrt</B > :: a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:log" ><A NAME="v%3Alog" ></A ></A ><B >log</B > :: a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:**" ><A NAME="v%3A%2A%2A" ></A ></A ><B >(**)</B > :: a -> a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:logBase" ><A NAME="v%3AlogBase" ></A ></A ><B >logBase</B > :: a -> a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:sin" ><A NAME="v%3Asin" ></A ></A ><B >sin</B > :: a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tan" ><A NAME="v%3Atan" ></A ></A ><B >tan</B > :: a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:cos" ><A NAME="v%3Acos" ></A ></A ><B >cos</B > :: a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:asin" ><A NAME="v%3Aasin" ></A ></A ><B >asin</B > :: a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:atan" ><A NAME="v%3Aatan" ></A ></A ><B >atan</B > :: a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:acos" ><A NAME="v%3Aacos" ></A ></A ><B >acos</B > :: a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:sinh" ><A NAME="v%3Asinh" ></A ></A ><B >sinh</B > :: a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tanh" ><A NAME="v%3Atanh" ></A ></A ><B >tanh</B > :: a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:cosh" ><A NAME="v%3Acosh" ></A ></A ><B >cosh</B > :: a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:asinh" ><A NAME="v%3Aasinh" ></A ></A ><B >asinh</B > :: a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:atanh" ><A NAME="v%3Aatanh" ></A ></A ><B >atanh</B > :: a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:acosh" ><A NAME="v%3Aacosh" ></A ></A ><B >acosh</B > :: a -> 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:Floating')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Floating" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFloating" >Floating</A > <A HREF="../ghc-prim/GHC-Types.html#t%3ADouble" >Double</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFloating" >Floating</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AFloat" >Float</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFloating" >Floating</A > <A HREF="Foreign-C-Types.html#t%3ACLDouble" >CLDouble</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFloating" >Floating</A > <A HREF="Foreign-C-Types.html#t%3ACDouble" >CDouble</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFloating" >Floating</A > <A HREF="Foreign-C-Types.html#t%3ACFloat" >CFloat</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARealFloat" >RealFloat</A > a => <A HREF="Prelude.html#t%3AFloating" >Floating</A > (<A HREF="Data-Complex.html#t%3AComplex" >Complex</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="Prelude.html#t%3AReal" >Real</A > a, <A HREF="Prelude.html#t%3AFractional" >Fractional</A > a) => <A NAME="t:RealFrac" ><A NAME="t%3ARealFrac" ></A ></A ><B >RealFrac</B > a <SPAN CLASS="keyword" >where</SPAN ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >Extracting components of fractions. </P ><P >Minimal complete definition: <TT ><A HREF="Prelude.html#v%3AproperFraction" >properFraction</A ></TT > </P ></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:properFraction" ><A NAME="v%3AproperFraction" ></A ></A ><B >properFraction</B > :: <A HREF="Prelude.html#t%3AIntegral" >Integral</A > b => a -> (b, a)</TD ></TR ><TR ><TD CLASS="doc" ><P >The function <TT ><A HREF="Prelude.html#v%3AproperFraction" >properFraction</A ></TT > takes a real fractional number <TT >x</TT > and returns a pair <TT >(n,f)</TT > such that <TT >x = n+f</TT >, and: </P ><UL ><LI > <TT >n</TT > is an integral number with the same sign as <TT >x</TT >; and </LI ><LI > <TT >f</TT > is a fraction with the same type and sign as <TT >x</TT >, and with absolute value less than <TT >1</TT >. </LI ></UL ><P >The default definitions of the <TT ><A HREF="Prelude.html#v%3Aceiling" >ceiling</A ></TT >, <TT ><A HREF="Prelude.html#v%3Afloor" >floor</A ></TT >, <TT ><A HREF="Prelude.html#v%3Atruncate" >truncate</A ></TT > and <TT ><A HREF="Prelude.html#v%3Around" >round</A ></TT > functions are in terms of <TT ><A HREF="Prelude.html#v%3AproperFraction" >properFraction</A ></TT >. </P ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:truncate" ><A NAME="v%3Atruncate" ></A ></A ><B >truncate</B > :: <A HREF="Prelude.html#t%3AIntegral" >Integral</A > b => a -> b</TD ></TR ><TR ><TD CLASS="doc" ><TT ><TT ><A HREF="Prelude.html#v%3Atruncate" >truncate</A ></TT > x</TT > returns the integer nearest <TT >x</TT > between zero and <TT >x</TT > </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:round" ><A NAME="v%3Around" ></A ></A ><B >round</B > :: <A HREF="Prelude.html#t%3AIntegral" >Integral</A > b => a -> b</TD ></TR ><TR ><TD CLASS="doc" ><TT ><TT ><A HREF="Prelude.html#v%3Around" >round</A ></TT > x</TT > returns the nearest integer to <TT >x</TT >; the even integer if <TT >x</TT > is equidistant between two integers </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:ceiling" ><A NAME="v%3Aceiling" ></A ></A ><B >ceiling</B > :: <A HREF="Prelude.html#t%3AIntegral" >Integral</A > b => a -> b</TD ></TR ><TR ><TD CLASS="doc" ><TT ><TT ><A HREF="Prelude.html#v%3Aceiling" >ceiling</A ></TT > x</TT > returns the least integer not less than <TT >x</TT > </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:floor" ><A NAME="v%3Afloor" ></A ></A ><B >floor</B > :: <A HREF="Prelude.html#t%3AIntegral" >Integral</A > b => a -> b</TD ></TR ><TR ><TD CLASS="doc" ><TT ><TT ><A HREF="Prelude.html#v%3Afloor" >floor</A ></TT > x</TT > returns the greatest integer not greater than <TT >x</TT > </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:RealFrac')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:RealFrac" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARealFrac" >RealFrac</A > <A HREF="../ghc-prim/GHC-Types.html#t%3ADouble" >Double</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARealFrac" >RealFrac</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AFloat" >Float</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARealFrac" >RealFrac</A > <A HREF="Foreign-C-Types.html#t%3ACLDouble" >CLDouble</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARealFrac" >RealFrac</A > <A HREF="Foreign-C-Types.html#t%3ACDouble" >CDouble</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARealFrac" >RealFrac</A > <A HREF="Foreign-C-Types.html#t%3ACFloat" >CFloat</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > a => <A HREF="Prelude.html#t%3ARealFrac" >RealFrac</A > (<A HREF="Data-Ratio.html#t%3ARatio" >Ratio</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Fixed.html#t%3AHasResolution" >HasResolution</A > a => <A HREF="Prelude.html#t%3ARealFrac" >RealFrac</A > (<A HREF="Data-Fixed.html#t%3AFixed" >Fixed</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="Prelude.html#t%3ARealFrac" >RealFrac</A > a, <A HREF="Prelude.html#t%3AFloating" >Floating</A > a) => <A NAME="t:RealFloat" ><A NAME="t%3ARealFloat" ></A ></A ><B >RealFloat</B > a <SPAN CLASS="keyword" >where</SPAN ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >Efficient, machine-independent access to the components of a floating-point number. </P ><P >Minimal complete definition: all except <TT ><A HREF="Prelude.html#v%3Aexponent" >exponent</A ></TT >, <TT ><A HREF="Prelude.html#v%3Asignificand" >significand</A ></TT >, <TT ><A HREF="Prelude.html#v%3AscaleFloat" >scaleFloat</A ></TT > and <TT ><A HREF="Prelude.html#v%3Aatan2" >atan2</A ></TT > </P ></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:floatRadix" ><A NAME="v%3AfloatRadix" ></A ></A ><B >floatRadix</B > :: a -> <A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A ></TD ></TR ><TR ><TD CLASS="doc" >a constant function, returning the radix of the representation (often <TT >2</TT >) </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:floatDigits" ><A NAME="v%3AfloatDigits" ></A ></A ><B >floatDigits</B > :: a -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="doc" >a constant function, returning the number of digits of <TT ><A HREF="Prelude.html#v%3AfloatRadix" >floatRadix</A ></TT > in the significand </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:floatRange" ><A NAME="v%3AfloatRange" ></A ></A ><B >floatRange</B > :: a -> (<A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >, <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >)</TD ></TR ><TR ><TD CLASS="doc" >a constant function, returning the lowest and highest values the exponent may assume </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:decodeFloat" ><A NAME="v%3AdecodeFloat" ></A ></A ><B >decodeFloat</B > :: a -> (<A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A >, <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A >)</TD ></TR ><TR ><TD CLASS="doc" >The function <TT ><A HREF="Prelude.html#v%3AdecodeFloat" >decodeFloat</A ></TT > applied to a real floating-point number returns the significand expressed as an <TT ><A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A ></TT > and an appropriately scaled exponent (an <TT ><A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TT >). If <TT ><TT ><A HREF="Prelude.html#v%3AdecodeFloat" >decodeFloat</A ></TT > x</TT > yields <TT >(m,n)</TT >, then <TT >x</TT > is equal in value to <TT >m*b^^n</TT >, where <TT >b</TT > is the floating-point radix, and furthermore, either <TT >m</TT > and <TT >n</TT > are both zero or else <TT >b^(d-1) <= m < b^d</TT >, where <TT >d</TT > is the value of <TT ><TT ><A HREF="Prelude.html#v%3AfloatDigits" >floatDigits</A ></TT > x</TT >. In particular, <TT ><TT ><A HREF="Prelude.html#v%3AdecodeFloat" >decodeFloat</A ></TT > 0 = (0,0)</TT >. </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:encodeFloat" ><A NAME="v%3AencodeFloat" ></A ></A ><B >encodeFloat</B > :: <A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A > -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> a</TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Prelude.html#v%3AencodeFloat" >encodeFloat</A ></TT > performs the inverse of <TT ><A HREF="Prelude.html#v%3AdecodeFloat" >decodeFloat</A ></TT > </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:exponent" ><A NAME="v%3Aexponent" ></A ></A ><B >exponent</B > :: a -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="doc" >the second component of <TT ><A HREF="Prelude.html#v%3AdecodeFloat" >decodeFloat</A ></TT >. </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:significand" ><A NAME="v%3Asignificand" ></A ></A ><B >significand</B > :: a -> a</TD ></TR ><TR ><TD CLASS="doc" >the first component of <TT ><A HREF="Prelude.html#v%3AdecodeFloat" >decodeFloat</A ></TT >, scaled to lie in the open interval (<TT >-1</TT >,<TT >1</TT >) </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:scaleFloat" ><A NAME="v%3AscaleFloat" ></A ></A ><B >scaleFloat</B > :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> a -> a</TD ></TR ><TR ><TD CLASS="doc" >multiplies a floating-point number by an integer power of the radix </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isNaN" ><A NAME="v%3AisNaN" ></A ></A ><B >isNaN</B > :: a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="../ghc-prim/GHC-Bool.html#v%3ATrue" >True</A ></TT > if the argument is an IEEE "not-a-number" (NaN) value </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isInfinite" ><A NAME="v%3AisInfinite" ></A ></A ><B >isInfinite</B > :: a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="../ghc-prim/GHC-Bool.html#v%3ATrue" >True</A ></TT > if the argument is an IEEE infinity or negative infinity </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isDenormalized" ><A NAME="v%3AisDenormalized" ></A ></A ><B >isDenormalized</B > :: a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="../ghc-prim/GHC-Bool.html#v%3ATrue" >True</A ></TT > if the argument is too small to be represented in normalized format </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isNegativeZero" ><A NAME="v%3AisNegativeZero" ></A ></A ><B >isNegativeZero</B > :: a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="../ghc-prim/GHC-Bool.html#v%3ATrue" >True</A ></TT > if the argument is an IEEE negative zero </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isIEEE" ><A NAME="v%3AisIEEE" ></A ></A ><B >isIEEE</B > :: a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="../ghc-prim/GHC-Bool.html#v%3ATrue" >True</A ></TT > if the argument is an IEEE floating point number </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:atan2" ><A NAME="v%3Aatan2" ></A ></A ><B >atan2</B > :: a -> a -> a</TD ></TR ><TR ><TD CLASS="doc" >a version of arctangent taking two real floating-point arguments. For real floating <TT >x</TT > and <TT >y</TT >, <TT ><TT ><A HREF="Prelude.html#v%3Aatan2" >atan2</A ></TT > y x</TT > computes the angle (from the positive x-axis) of the vector from the origin to the point <TT >(x,y)</TT >. <TT ><TT ><A HREF="Prelude.html#v%3Aatan2" >atan2</A ></TT > y x</TT > returns a value in the range [<TT >-pi</TT >, <TT >pi</TT >]. It follows the Common Lisp semantics for the origin when signed zeroes are supported. <TT ><TT ><A HREF="Prelude.html#v%3Aatan2" >atan2</A ></TT > y 1</TT >, with <TT >y</TT > in a type that is <TT ><A HREF="Prelude.html#t%3ARealFloat" >RealFloat</A ></TT >, should return the same value as <TT ><TT ><A HREF="Prelude.html#v%3Aatan" >atan</A ></TT > y</TT >. A default definition of <TT ><A HREF="Prelude.html#v%3Aatan2" >atan2</A ></TT > is provided, but implementors can provide a more accurate implementation. </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:RealFloat')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:RealFloat" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARealFloat" >RealFloat</A > <A HREF="../ghc-prim/GHC-Types.html#t%3ADouble" >Double</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARealFloat" >RealFloat</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AFloat" >Float</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARealFloat" >RealFloat</A > <A HREF="Foreign-C-Types.html#t%3ACLDouble" >CLDouble</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARealFloat" >RealFloat</A > <A HREF="Foreign-C-Types.html#t%3ACDouble" >CDouble</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARealFloat" >RealFloat</A > <A HREF="Foreign-C-Types.html#t%3ACFloat" >CFloat</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section3" ><A NAME="8" ><A NAME="8" >Numeric functions </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:subtract" ><A NAME="v%3Asubtract" ></A ></A ><B >subtract</B > :: <A HREF="Prelude.html#t%3ANum" >Num</A > a => a -> a -> a</TD ></TR ><TR ><TD CLASS="doc" ><P >the same as <TT ><TT ><A HREF="Prelude.html#v%3Aflip" >flip</A ></TT > (<TT ><A HREF="Prelude.html#v%3A-" >-</A ></TT >)</TT >. </P ><P >Because <TT >-</TT > is treated specially in the Haskell grammar, <TT >(-</TT > <EM >e</EM ><TT >)</TT > is not a section, but an application of prefix negation. However, <TT >(<TT ><A HREF="Prelude.html#v%3Asubtract" >subtract</A ></TT ></TT > <EM >exp</EM ><TT >)</TT > is equivalent to the disallowed section. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:even" ><A NAME="v%3Aeven" ></A ></A ><B >even</B > :: <A HREF="Prelude.html#t%3AIntegral" >Integral</A > a => a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:odd" ><A NAME="v%3Aodd" ></A ></A ><B >odd</B > :: <A HREF="Prelude.html#t%3AIntegral" >Integral</A > a => a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:gcd" ><A NAME="v%3Agcd" ></A ></A ><B >gcd</B > :: <A HREF="Prelude.html#t%3AIntegral" >Integral</A > a => a -> a -> a</TD ></TR ><TR ><TD CLASS="doc" ><TT ><TT ><A HREF="Prelude.html#v%3Agcd" >gcd</A ></TT > x y</TT > is the greatest (positive) integer that divides both <TT >x</TT > and <TT >y</TT >; for example <TT ><TT ><A HREF="Prelude.html#v%3Agcd" >gcd</A ></TT > (-3) 6</TT > = <TT >3</TT >, <TT ><TT ><A HREF="Prelude.html#v%3Agcd" >gcd</A ></TT > (-3) (-6)</TT > = <TT >3</TT >, <TT ><TT ><A HREF="Prelude.html#v%3Agcd" >gcd</A ></TT > 0 4</TT > = <TT >4</TT >. <TT ><TT ><A HREF="Prelude.html#v%3Agcd" >gcd</A ></TT > 0 0</TT > raises a runtime error. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:lcm" ><A NAME="v%3Alcm" ></A ></A ><B >lcm</B > :: <A HREF="Prelude.html#t%3AIntegral" >Integral</A > a => a -> a -> a</TD ></TR ><TR ><TD CLASS="doc" ><TT ><TT ><A HREF="Prelude.html#v%3Alcm" >lcm</A ></TT > x y</TT > is the smallest positive integer that both <TT >x</TT > and <TT >y</TT > divide. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:^" ><A NAME="v%3A%5E" ></A ></A ><B >(^)</B > :: (<A HREF="Prelude.html#t%3ANum" >Num</A > a, <A HREF="Prelude.html#t%3AIntegral" >Integral</A > b) => a -> b -> a</TD ></TR ><TR ><TD CLASS="doc" >raise a number to a non-negative integral power </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:^^" ><A NAME="v%3A%5E%5E" ></A ></A ><B >(^^)</B > :: (<A HREF="Prelude.html#t%3AFractional" >Fractional</A > a, <A HREF="Prelude.html#t%3AIntegral" >Integral</A > b) => a -> b -> a</TD ></TR ><TR ><TD CLASS="doc" >raise a number to an integral power </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:fromIntegral" ><A NAME="v%3AfromIntegral" ></A ></A ><B >fromIntegral</B > :: (<A HREF="Prelude.html#t%3AIntegral" >Integral</A > a, <A HREF="Prelude.html#t%3ANum" >Num</A > b) => a -> b</TD ></TR ><TR ><TD CLASS="doc" >general coercion from integral types </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:realToFrac" ><A NAME="v%3ArealToFrac" ></A ></A ><B >realToFrac</B > :: (<A HREF="Prelude.html#t%3AReal" >Real</A > a, <A HREF="Prelude.html#t%3AFractional" >Fractional</A > b) => a -> b</TD ></TR ><TR ><TD CLASS="doc" >general coercion to fractional types </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="9" ><A NAME="9" >Monads and functors </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A NAME="t:Monad" ><A NAME="t%3AMonad" ></A ></A ><B >Monad</B > m <SPAN CLASS="keyword" >where</SPAN ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >The <TT ><A HREF="Prelude.html#t%3AMonad" >Monad</A ></TT > class defines the basic operations over a <EM >monad</EM >, a concept from a branch of mathematics known as <EM >category theory</EM >. From the perspective of a Haskell programmer, however, it is best to think of a monad as an <EM >abstract datatype</EM > of actions. Haskell's <TT >do</TT > expressions provide a convenient syntax for writing monadic expressions. </P ><P >Minimal complete definition: <TT ><A HREF="Prelude.html#v%3A%3E%3E%3D" >>>=</A ></TT > and <TT ><A HREF="Prelude.html#v%3Areturn" >return</A ></TT >. </P ><P >Instances of <TT ><A HREF="Prelude.html#t%3AMonad" >Monad</A ></TT > should satisfy the following laws: </P ><PRE > return a >>= k == k a m >>= return == m m >>= (\x -> k x >>= h) == (m >>= k) >>= h </PRE ><P >Instances of both <TT ><A HREF="Prelude.html#t%3AMonad" >Monad</A ></TT > and <TT ><A HREF="Prelude.html#t%3AFunctor" >Functor</A ></TT > should additionally satisfy the law: </P ><PRE > fmap f xs == xs >>= return . f </PRE ><P >The instances of <TT ><A HREF="Prelude.html#t%3AMonad" >Monad</A ></TT > for lists, Data.Maybe.Maybe and System.IO.IO defined in the <A HREF="Prelude.html" >Prelude</A > satisfy these laws. </P ></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:>>=" ><A NAME="v%3A%3E%3E%3D" ></A ></A ><B >(>>=)</B > :: <SPAN CLASS="keyword" >forall</SPAN > a b. m a -> (a -> m b) -> m b</TD ></TR ><TR ><TD CLASS="doc" >Sequentially compose two actions, passing any value produced by the first as an argument to the second. </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:>>" ><A NAME="v%3A%3E%3E" ></A ></A ><B >(>>)</B > :: <SPAN CLASS="keyword" >forall</SPAN > a b. m a -> m b -> m b</TD ></TR ><TR ><TD CLASS="doc" >Sequentially compose two actions, discarding any value produced by the first, like sequencing operators (such as the semicolon) in imperative languages. </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:return" ><A NAME="v%3Areturn" ></A ></A ><B >return</B > :: a -> m a</TD ></TR ><TR ><TD CLASS="doc" >Inject a value into the monadic type. </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:fail" ><A NAME="v%3Afail" ></A ></A ><B >fail</B > :: <A HREF="Prelude.html#t%3AString" >String</A > -> m a</TD ></TR ><TR ><TD CLASS="doc" >Fail with a message. This operation is not part of the mathematical definition of a monad, but is invoked on pattern-match failure in a <TT >do</TT > expression. </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:Monad')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Monad" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AMonad" >Monad</A > []</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AMonad" >Monad</A > <A HREF="Prelude.html#t%3AIO" >IO</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AMonad" >Monad</A > [::]</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AMonad" >Monad</A > <A HREF="Prelude.html#t%3AMaybe" >Maybe</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AMonad" >Monad</A > <A HREF="Text-ParserCombinators-ReadP.html#t%3AReadP" >ReadP</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AMonad" >Monad</A > P</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AMonad" >Monad</A > <A HREF="Text-ParserCombinators-ReadPrec.html#t%3AReadPrec" >ReadPrec</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AMonad" >Monad</A > <A HREF="GHC-Conc.html#t%3ASTM" >STM</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AMonad" >Monad</A > ((->) r)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AMonad" >Monad</A > (<A HREF="Control-Monad-ST.html#t%3AST" >ST</A > s)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Control-Arrow.html#t%3AArrowApply" >ArrowApply</A > a => <A HREF="Prelude.html#t%3AMonad" >Monad</A > (<A HREF="Control-Arrow.html#t%3AArrowMonad" >ArrowMonad</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AMonad" >Monad</A > (<A HREF="Control-Monad-ST-Lazy.html#t%3AST" >ST</A > s)</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 NAME="t:Functor" ><A NAME="t%3AFunctor" ></A ></A ><B >Functor</B > f <SPAN CLASS="keyword" >where</SPAN ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >The <TT ><A HREF="Prelude.html#t%3AFunctor" >Functor</A ></TT > class is used for types that can be mapped over. Instances of <TT ><A HREF="Prelude.html#t%3AFunctor" >Functor</A ></TT > should satisfy the following laws: </P ><PRE > fmap id == id fmap (f . g) == fmap f . fmap g </PRE ><P >The instances of <TT ><A HREF="Prelude.html#t%3AFunctor" >Functor</A ></TT > for lists, Data.Maybe.Maybe and System.IO.IO defined in the <A HREF="Prelude.html" >Prelude</A > satisfy these laws. </P ></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:fmap" ><A NAME="v%3Afmap" ></A ></A ><B >fmap</B > :: (a -> b) -> f a -> f b</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:Functor')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Functor" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFunctor" >Functor</A > []</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFunctor" >Functor</A > <A HREF="Prelude.html#t%3AIO" >IO</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFunctor" >Functor</A > [::]</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFunctor" >Functor</A > <A HREF="Prelude.html#t%3AMaybe" >Maybe</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFunctor" >Functor</A > <A HREF="Text-ParserCombinators-ReadP.html#t%3AReadP" >ReadP</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFunctor" >Functor</A > <A HREF="Text-ParserCombinators-ReadPrec.html#t%3AReadPrec" >ReadPrec</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFunctor" >Functor</A > <A HREF="GHC-Conc.html#t%3ASTM" >STM</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFunctor" >Functor</A > <A HREF="Control-Applicative.html#t%3AZipList" >ZipList</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFunctor" >Functor</A > Id</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFunctor" >Functor</A > ((->) r)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFunctor" >Functor</A > (<A HREF="Prelude.html#t%3AEither" >Either</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFunctor" >Functor</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%29" >(,)</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFunctor" >Functor</A > (<A HREF="Control-Monad-ST.html#t%3AST" >ST</A > s)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="GHC-Arr.html#t%3AIx" >Ix</A > i => <A HREF="Prelude.html#t%3AFunctor" >Functor</A > (<A HREF="GHC-Arr.html#t%3AArray" >Array</A > i)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFunctor" >Functor</A > (<A HREF="Control-Monad-ST-Lazy.html#t%3AST" >ST</A > s)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AMonad" >Monad</A > m => <A HREF="Prelude.html#t%3AFunctor" >Functor</A > (<A HREF="Control-Applicative.html#t%3AWrappedMonad" >WrappedMonad</A > m)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFunctor" >Functor</A > (<A HREF="Control-Applicative.html#t%3AConst" >Const</A > m)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFunctor" >Functor</A > (StateR s)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFunctor" >Functor</A > (StateL s)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Control-Arrow.html#t%3AArrow" >Arrow</A > a => <A HREF="Prelude.html#t%3AFunctor" >Functor</A > (<A HREF="Control-Applicative.html#t%3AWrappedArrow" >WrappedArrow</A > a b)</TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mapM" ><A NAME="v%3AmapM" ></A ></A ><B >mapM</B > :: <A HREF="Prelude.html#t%3AMonad" >Monad</A > m => (a -> m b) -> [a] -> m [b]</TD ></TR ><TR ><TD CLASS="doc" ><TT ><TT ><A HREF="Prelude.html#v%3AmapM" >mapM</A ></TT > f</TT > is equivalent to <TT ><TT ><A HREF="Prelude.html#v%3Asequence" >sequence</A ></TT > . <TT ><A HREF="Prelude.html#v%3Amap" >map</A ></TT > f</TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mapM_" ><A NAME="v%3AmapM_" ></A ></A ><B >mapM_</B > :: <A HREF="Prelude.html#t%3AMonad" >Monad</A > m => (a -> m b) -> [a] -> m <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="doc" ><TT ><TT ><A HREF="Prelude.html#v%3AmapM_" >mapM_</A ></TT > f</TT > is equivalent to <TT ><TT ><A HREF="Prelude.html#v%3Asequence_" >sequence_</A ></TT > . <TT ><A HREF="Prelude.html#v%3Amap" >map</A ></TT > f</TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:sequence" ><A NAME="v%3Asequence" ></A ></A ><B >sequence</B > :: <A HREF="Prelude.html#t%3AMonad" >Monad</A > m => [m a] -> m [a]</TD ></TR ><TR ><TD CLASS="doc" >Evaluate each action in the sequence from left to right, and collect the results. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:sequence_" ><A NAME="v%3Asequence_" ></A ></A ><B >sequence_</B > :: <A HREF="Prelude.html#t%3AMonad" >Monad</A > m => [m a] -> m <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="doc" >Evaluate each action in the sequence from left to right, and ignore the results. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:=<<" ><A NAME="v%3A%3D%3C%3C" ></A ></A ><B >(=<<)</B > :: <A HREF="Prelude.html#t%3AMonad" >Monad</A > m => (a -> m b) -> m a -> m b</TD ></TR ><TR ><TD CLASS="doc" >Same as <TT ><A HREF="Prelude.html#v%3A%3E%3E%3D" >>>=</A ></TT >, but with the arguments interchanged. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="10" ><A NAME="10" >Miscellaneous functions </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:id" ><A NAME="v%3Aid" ></A ></A ><B >id</B > :: a -> a</TD ></TR ><TR ><TD CLASS="doc" >Identity function. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:const" ><A NAME="v%3Aconst" ></A ></A ><B >const</B > :: a -> b -> a</TD ></TR ><TR ><TD CLASS="doc" >Constant function. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:." ><A NAME="v%3A." ></A ></A ><B >(.)</B > :: (b -> c) -> (a -> b) -> a -> c</TD ></TR ><TR ><TD CLASS="doc" >Function composition. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:flip" ><A NAME="v%3Aflip" ></A ></A ><B >flip</B > :: (a -> b -> c) -> b -> a -> c</TD ></TR ><TR ><TD CLASS="doc" ><TT ><TT ><A HREF="Prelude.html#v%3Aflip" >flip</A ></TT > f</TT > takes its (first) two arguments in the reverse order of <TT >f</TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:$" ><A NAME="v%3A%24" ></A ></A ><B >($)</B > :: (a -> b) -> a -> b</TD ></TR ><TR ><TD CLASS="doc" ><P >Application operator. This operator is redundant, since ordinary application <TT >(f x)</TT > means the same as <TT >(f <TT ><A HREF="Prelude.html#v%3A%24" >$</A ></TT > x)</TT >. However, <TT ><A HREF="Prelude.html#v%3A%24" >$</A ></TT > has low, right-associative binding precedence, so it sometimes allows parentheses to be omitted; for example: </P ><PRE > f $ g $ h x = f (g (h x)) </PRE ><P >It is also useful in higher-order situations, such as <TT ><TT ><A HREF="Prelude.html#v%3Amap" >map</A ></TT > (<TT ><A HREF="Prelude.html#v%3A%24" >$</A ></TT > 0) xs</TT >, or <TT >Data.List.zipWith (<TT ><A HREF="Prelude.html#v%3A%24" >$</A ></TT >) fs xs</TT >. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:until" ><A NAME="v%3Auntil" ></A ></A ><B >until</B > :: (a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A >) -> (a -> a) -> a -> a</TD ></TR ><TR ><TD CLASS="doc" ><TT ><TT ><A HREF="Prelude.html#v%3Auntil" >until</A ></TT > p f</TT > yields the result of applying <TT >f</TT > until <TT >p</TT > holds. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:asTypeOf" ><A NAME="v%3AasTypeOf" ></A ></A ><B >asTypeOf</B > :: a -> a -> a</TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Prelude.html#v%3AasTypeOf" >asTypeOf</A ></TT > is a type-restricted version of <TT ><A HREF="Prelude.html#v%3Aconst" >const</A ></TT >. It is usually used as an infix operator, and its typing forces its first argument (which is usually overloaded) to have the same type as the second. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:error" ><A NAME="v%3Aerror" ></A ></A ><B >error</B > :: [<A HREF="../ghc-prim/GHC-Types.html#t%3AChar" >Char</A >] -> a</TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Prelude.html#v%3Aerror" >error</A ></TT > stops execution and displays an error message. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:undefined" ><A NAME="v%3Aundefined" ></A ></A ><B >undefined</B > :: a</TD ></TR ><TR ><TD CLASS="doc" >A special case of <TT ><A HREF="Prelude.html#v%3Aerror" >error</A ></TT >. It is expected that compilers will recognize this and insert error messages which are more appropriate to the context in which <TT ><A HREF="Prelude.html#v%3Aundefined" >undefined</A ></TT > appears. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../ghc-prim/GHC-Prim.html#v%3Aseq" >seq</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:$!" ><A NAME="v%3A%24%21" ></A ></A ><B >($!)</B > :: (a -> b) -> a -> b</TD ></TR ><TR ><TD CLASS="doc" >Strict (call-by-value) application, defined in terms of <TT ><A HREF="../ghc-prim/GHC-Prim.html#v%3Aseq" >seq</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="11" ><A NAME="11" >List operations </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:map" ><A NAME="v%3Amap" ></A ></A ><B >map</B > :: (a -> b) -> [a] -> [b]</TD ></TR ><TR ><TD CLASS="doc" ><P ><TT ><A HREF="Prelude.html#v%3Amap" >map</A ></TT > <TT >f xs</TT > is the list obtained by applying <TT >f</TT > to each element of <TT >xs</TT >, i.e., </P ><PRE > map f [x1, x2, ..., xn] == [f x1, f x2, ..., f xn] map f [x1, x2, ...] == [f x1, f x2, ...] </PRE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:++" ><A NAME="v%3A%2B%2B" ></A ></A ><B >(++)</B > :: [a] -> [a] -> [a]</TD ></TR ><TR ><TD CLASS="doc" ><P >Append two lists, i.e., </P ><PRE > [x1, ..., xm] ++ [y1, ..., yn] == [x1, ..., xm, y1, ..., yn] [x1, ..., xm] ++ [y1, ...] == [x1, ..., xm, y1, ...] </PRE ><P >If the first list is not finite, the result is the first list. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:filter" ><A NAME="v%3Afilter" ></A ></A ><B >filter</B > :: (a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A >) -> [a] -> [a]</TD ></TR ><TR ><TD CLASS="doc" ><P ><TT ><A HREF="Prelude.html#v%3Afilter" >filter</A ></TT >, applied to a predicate and a list, returns the list of those elements that satisfy the predicate; i.e., </P ><PRE > filter p xs = [ x | x <- xs, p x] </PRE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:head" ><A NAME="v%3Ahead" ></A ></A ><B >head</B > :: [a] -> a</TD ></TR ><TR ><TD CLASS="doc" >Extract the first element of a list, which must be non-empty. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:last" ><A NAME="v%3Alast" ></A ></A ><B >last</B > :: [a] -> a</TD ></TR ><TR ><TD CLASS="doc" >Extract the last element of a list, which must be finite and non-empty. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tail" ><A NAME="v%3Atail" ></A ></A ><B >tail</B > :: [a] -> [a]</TD ></TR ><TR ><TD CLASS="doc" >Extract the elements after the head of a list, which must be non-empty. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:init" ><A NAME="v%3Ainit" ></A ></A ><B >init</B > :: [a] -> [a]</TD ></TR ><TR ><TD CLASS="doc" >Return all the elements of a list except the last one. The list must be finite and non-empty. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:null" ><A NAME="v%3Anull" ></A ></A ><B >null</B > :: [a] -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" >Test whether a list is empty. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:length" ><A NAME="v%3Alength" ></A ></A ><B >length</B > :: [a] -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Prelude.html#v%3Alength" >length</A ></TT > returns the length of a finite list as an <TT ><A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TT >. It is an instance of the more general Data.List.genericLength, the result type of which may be any kind of number. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:!!" ><A NAME="v%3A%21%21" ></A ></A ><B >(!!)</B > :: [a] -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> a</TD ></TR ><TR ><TD CLASS="doc" >List index (subscript) operator, starting from 0. It is an instance of the more general Data.List.genericIndex, which takes an index of any integral type. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:reverse" ><A NAME="v%3Areverse" ></A ></A ><B >reverse</B > :: [a] -> [a]</TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Prelude.html#v%3Areverse" >reverse</A ></TT > <TT >xs</TT > returns the elements of <TT >xs</TT > in reverse order. <TT >xs</TT > must be finite. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="12" ><A NAME="12" >Reducing lists (folds) </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:foldl" ><A NAME="v%3Afoldl" ></A ></A ><B >foldl</B > :: (a -> b -> a) -> a -> [b] -> a</TD ></TR ><TR ><TD CLASS="doc" ><P ><TT ><A HREF="Prelude.html#v%3Afoldl" >foldl</A ></TT >, applied to a binary operator, a starting value (typically the left-identity of the operator), and a list, reduces the list using the binary operator, from left to right: </P ><PRE > foldl f z [x1, x2, ..., xn] == (...((z `f` x1) `f` x2) `f`...) `f` xn </PRE ><P >The list must be finite. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:foldl1" ><A NAME="v%3Afoldl1" ></A ></A ><B >foldl1</B > :: (a -> a -> a) -> [a] -> a</TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Prelude.html#v%3Afoldl1" >foldl1</A ></TT > is a variant of <TT ><A HREF="Prelude.html#v%3Afoldl" >foldl</A ></TT > that has no starting value argument, and thus must be applied to non-empty lists. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:foldr" ><A NAME="v%3Afoldr" ></A ></A ><B >foldr</B > :: (a -> b -> b) -> b -> [a] -> b</TD ></TR ><TR ><TD CLASS="doc" ><P ><TT ><A HREF="Prelude.html#v%3Afoldr" >foldr</A ></TT >, applied to a binary operator, a starting value (typically the right-identity of the operator), and a list, reduces the list using the binary operator, from right to left: </P ><PRE > foldr f z [x1, x2, ..., xn] == x1 `f` (x2 `f` ... (xn `f` z)...) </PRE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:foldr1" ><A NAME="v%3Afoldr1" ></A ></A ><B >foldr1</B > :: (a -> a -> a) -> [a] -> a</TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Prelude.html#v%3Afoldr1" >foldr1</A ></TT > is a variant of <TT ><A HREF="Prelude.html#v%3Afoldr" >foldr</A ></TT > that has no starting value argument, and thus must be applied to non-empty lists. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section3" ><A NAME="13" ><A NAME="13" >Special folds </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:and" ><A NAME="v%3Aand" ></A ></A ><B >and</B > :: [<A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A >] -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Prelude.html#v%3Aand" >and</A ></TT > returns the conjunction of a Boolean list. For the result to be <TT ><A HREF="../ghc-prim/GHC-Bool.html#v%3ATrue" >True</A ></TT >, the list must be finite; <TT ><A HREF="../ghc-prim/GHC-Bool.html#v%3AFalse" >False</A ></TT >, however, results from a <TT ><A HREF="../ghc-prim/GHC-Bool.html#v%3AFalse" >False</A ></TT > value at a finite index of a finite or infinite list. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:or" ><A NAME="v%3Aor" ></A ></A ><B >or</B > :: [<A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A >] -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Prelude.html#v%3Aor" >or</A ></TT > returns the disjunction of a Boolean list. For the result to be <TT ><A HREF="../ghc-prim/GHC-Bool.html#v%3AFalse" >False</A ></TT >, the list must be finite; <TT ><A HREF="../ghc-prim/GHC-Bool.html#v%3ATrue" >True</A ></TT >, however, results from a <TT ><A HREF="../ghc-prim/GHC-Bool.html#v%3ATrue" >True</A ></TT > value at a finite index of a finite or infinite list. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:any" ><A NAME="v%3Aany" ></A ></A ><B >any</B > :: (a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A >) -> [a] -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" >Applied to a predicate and a list, <TT ><A HREF="Prelude.html#v%3Aany" >any</A ></TT > determines if any element of the list satisfies the predicate. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:all" ><A NAME="v%3Aall" ></A ></A ><B >all</B > :: (a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A >) -> [a] -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" >Applied to a predicate and a list, <TT ><A HREF="Prelude.html#v%3Aall" >all</A ></TT > determines if all elements of the list satisfy the predicate. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:sum" ><A NAME="v%3Asum" ></A ></A ><B >sum</B > :: <A HREF="Prelude.html#t%3ANum" >Num</A > a => [a] -> a</TD ></TR ><TR ><TD CLASS="doc" >The <TT ><A HREF="Prelude.html#v%3Asum" >sum</A ></TT > function computes the sum of a finite list of numbers. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:product" ><A NAME="v%3Aproduct" ></A ></A ><B >product</B > :: <A HREF="Prelude.html#t%3ANum" >Num</A > a => [a] -> a</TD ></TR ><TR ><TD CLASS="doc" >The <TT ><A HREF="Prelude.html#v%3Aproduct" >product</A ></TT > function computes the product of a finite list of numbers. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:concat" ><A NAME="v%3Aconcat" ></A ></A ><B >concat</B > :: [[a]] -> [a]</TD ></TR ><TR ><TD CLASS="doc" >Concatenate a list of lists. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:concatMap" ><A NAME="v%3AconcatMap" ></A ></A ><B >concatMap</B > :: (a -> [b]) -> [a] -> [b]</TD ></TR ><TR ><TD CLASS="doc" >Map a function over a list and concatenate the results. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:maximum" ><A NAME="v%3Amaximum" ></A ></A ><B >maximum</B > :: <A HREF="Prelude.html#t%3AOrd" >Ord</A > a => [a] -> a</TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Prelude.html#v%3Amaximum" >maximum</A ></TT > returns the maximum value from a list, which must be non-empty, finite, and of an ordered type. It is a special case of <TT ><A HREF="Data-List.html#v%3AmaximumBy" >maximumBy</A ></TT >, which allows the programmer to supply their own comparison function. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:minimum" ><A NAME="v%3Aminimum" ></A ></A ><B >minimum</B > :: <A HREF="Prelude.html#t%3AOrd" >Ord</A > a => [a] -> a</TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Prelude.html#v%3Aminimum" >minimum</A ></TT > returns the minimum value from a list, which must be non-empty, finite, and of an ordered type. It is a special case of <TT ><A HREF="Data-List.html#v%3AminimumBy" >minimumBy</A ></TT >, which allows the programmer to supply their own comparison function. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="14" ><A NAME="14" >Building lists </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section3" ><A NAME="15" ><A NAME="15" >Scans </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:scanl" ><A NAME="v%3Ascanl" ></A ></A ><B >scanl</B > :: (a -> b -> a) -> a -> [b] -> [a]</TD ></TR ><TR ><TD CLASS="doc" ><P ><TT ><A HREF="Prelude.html#v%3Ascanl" >scanl</A ></TT > is similar to <TT ><A HREF="Prelude.html#v%3Afoldl" >foldl</A ></TT >, but returns a list of successive reduced values from the left: </P ><PRE > scanl f z [x1, x2, ...] == [z, z `f` x1, (z `f` x1) `f` x2, ...] </PRE ><P >Note that </P ><PRE > last (scanl f z xs) == foldl f z xs. </PRE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:scanl1" ><A NAME="v%3Ascanl1" ></A ></A ><B >scanl1</B > :: (a -> a -> a) -> [a] -> [a]</TD ></TR ><TR ><TD CLASS="doc" ><P ><TT ><A HREF="Prelude.html#v%3Ascanl1" >scanl1</A ></TT > is a variant of <TT ><A HREF="Prelude.html#v%3Ascanl" >scanl</A ></TT > that has no starting value argument: </P ><PRE > scanl1 f [x1, x2, ...] == [x1, x1 `f` x2, ...] </PRE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:scanr" ><A NAME="v%3Ascanr" ></A ></A ><B >scanr</B > :: (a -> b -> b) -> b -> [a] -> [b]</TD ></TR ><TR ><TD CLASS="doc" ><P ><TT ><A HREF="Prelude.html#v%3Ascanr" >scanr</A ></TT > is the right-to-left dual of <TT ><A HREF="Prelude.html#v%3Ascanl" >scanl</A ></TT >. Note that </P ><PRE > head (scanr f z xs) == foldr f z xs. </PRE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:scanr1" ><A NAME="v%3Ascanr1" ></A ></A ><B >scanr1</B > :: (a -> a -> a) -> [a] -> [a]</TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Prelude.html#v%3Ascanr1" >scanr1</A ></TT > is a variant of <TT ><A HREF="Prelude.html#v%3Ascanr" >scanr</A ></TT > that has no starting value argument. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section3" ><A NAME="16" ><A NAME="16" >Infinite lists </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:iterate" ><A NAME="v%3Aiterate" ></A ></A ><B >iterate</B > :: (a -> a) -> a -> [a]</TD ></TR ><TR ><TD CLASS="doc" ><P ><TT ><A HREF="Prelude.html#v%3Aiterate" >iterate</A ></TT > <TT >f x</TT > returns an infinite list of repeated applications of <TT >f</TT > to <TT >x</TT >: </P ><PRE > iterate f x == [x, f x, f (f x), ...] </PRE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:repeat" ><A NAME="v%3Arepeat" ></A ></A ><B >repeat</B > :: a -> [a]</TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Prelude.html#v%3Arepeat" >repeat</A ></TT > <TT >x</TT > is an infinite list, with <TT >x</TT > the value of every element. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:replicate" ><A NAME="v%3Areplicate" ></A ></A ><B >replicate</B > :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> a -> [a]</TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Prelude.html#v%3Areplicate" >replicate</A ></TT > <TT >n x</TT > is a list of length <TT >n</TT > with <TT >x</TT > the value of every element. It is an instance of the more general Data.List.genericReplicate, in which <TT >n</TT > may be of any integral type. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:cycle" ><A NAME="v%3Acycle" ></A ></A ><B >cycle</B > :: [a] -> [a]</TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Prelude.html#v%3Acycle" >cycle</A ></TT > ties a finite list into a circular one, or equivalently, the infinite repetition of the original list. It is the identity on infinite lists. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="17" ><A NAME="17" >Sublists </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:take" ><A NAME="v%3Atake" ></A ></A ><B >take</B > :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> [a] -> [a]</TD ></TR ><TR ><TD CLASS="doc" ><P ><TT ><A HREF="Prelude.html#v%3Atake" >take</A ></TT > <TT >n</TT >, applied to a list <TT >xs</TT >, returns the prefix of <TT >xs</TT > of length <TT >n</TT >, or <TT >xs</TT > itself if <TT >n > <TT ><A HREF="Prelude.html#v%3Alength" >length</A ></TT > xs</TT >: </P ><PRE > take 5 "Hello World!" == "Hello" take 3 [1,2,3,4,5] == [1,2,3] take 3 [1,2] == [1,2] take 3 [] == [] take (-1) [1,2] == [] take 0 [1,2] == [] </PRE ><P >It is an instance of the more general Data.List.genericTake, in which <TT >n</TT > may be of any integral type. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:drop" ><A NAME="v%3Adrop" ></A ></A ><B >drop</B > :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> [a] -> [a]</TD ></TR ><TR ><TD CLASS="doc" ><P ><TT ><A HREF="Prelude.html#v%3Adrop" >drop</A ></TT > <TT >n xs</TT > returns the suffix of <TT >xs</TT > after the first <TT >n</TT > elements, or <TT >[]</TT > if <TT >n > <TT ><A HREF="Prelude.html#v%3Alength" >length</A ></TT > xs</TT >: </P ><PRE > drop 6 "Hello World!" == "World!" drop 3 [1,2,3,4,5] == [4,5] drop 3 [1,2] == [] drop 3 [] == [] drop (-1) [1,2] == [1,2] drop 0 [1,2] == [1,2] </PRE ><P >It is an instance of the more general Data.List.genericDrop, in which <TT >n</TT > may be of any integral type. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:splitAt" ><A NAME="v%3AsplitAt" ></A ></A ><B >splitAt</B > :: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A > -> [a] -> ([a], [a])</TD ></TR ><TR ><TD CLASS="doc" ><P ><TT ><A HREF="Prelude.html#v%3AsplitAt" >splitAt</A ></TT > <TT >n xs</TT > returns a tuple where first element is <TT >xs</TT > prefix of length <TT >n</TT > and second element is the remainder of the list: </P ><PRE > splitAt 6 "Hello World!" == ("Hello ","World!") splitAt 3 [1,2,3,4,5] == ([1,2,3],[4,5]) splitAt 1 [1,2,3] == ([1],[2,3]) splitAt 3 [1,2,3] == ([1,2,3],[]) splitAt 4 [1,2,3] == ([1,2,3],[]) splitAt 0 [1,2,3] == ([],[1,2,3]) splitAt (-1) [1,2,3] == ([],[1,2,3]) </PRE ><P >It is equivalent to <TT >(<TT ><A HREF="Prelude.html#v%3Atake" >take</A ></TT > n xs, <TT ><A HREF="Prelude.html#v%3Adrop" >drop</A ></TT > n xs)</TT >. <TT ><A HREF="Prelude.html#v%3AsplitAt" >splitAt</A ></TT > is an instance of the more general Data.List.genericSplitAt, in which <TT >n</TT > may be of any integral type. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:takeWhile" ><A NAME="v%3AtakeWhile" ></A ></A ><B >takeWhile</B > :: (a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A >) -> [a] -> [a]</TD ></TR ><TR ><TD CLASS="doc" ><P ><TT ><A HREF="Prelude.html#v%3AtakeWhile" >takeWhile</A ></TT >, applied to a predicate <TT >p</TT > and a list <TT >xs</TT >, returns the longest prefix (possibly empty) of <TT >xs</TT > of elements that satisfy <TT >p</TT >: </P ><PRE > takeWhile (< 3) [1,2,3,4,1,2,3,4] == [1,2] takeWhile (< 9) [1,2,3] == [1,2,3] takeWhile (< 0) [1,2,3] == [] </PRE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:dropWhile" ><A NAME="v%3AdropWhile" ></A ></A ><B >dropWhile</B > :: (a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A >) -> [a] -> [a]</TD ></TR ><TR ><TD CLASS="doc" ><P ><TT ><A HREF="Prelude.html#v%3AdropWhile" >dropWhile</A ></TT > <TT >p xs</TT > returns the suffix remaining after <TT ><A HREF="Prelude.html#v%3AtakeWhile" >takeWhile</A ></TT > <TT >p xs</TT >: </P ><PRE > dropWhile (< 3) [1,2,3,4,5,1,2,3] == [3,4,5,1,2,3] dropWhile (< 9) [1,2,3] == [] dropWhile (< 0) [1,2,3] == [1,2,3] </PRE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:span" ><A NAME="v%3Aspan" ></A ></A ><B >span</B > :: (a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A >) -> [a] -> ([a], [a])</TD ></TR ><TR ><TD CLASS="doc" ><P ><TT ><A HREF="Prelude.html#v%3Aspan" >span</A ></TT >, applied to a predicate <TT >p</TT > and a list <TT >xs</TT >, returns a tuple where first element is longest prefix (possibly empty) of <TT >xs</TT > of elements that satisfy <TT >p</TT > and second element is the remainder of the list: </P ><PRE > span (< 3) [1,2,3,4,1,2,3,4] == ([1,2],[3,4,1,2,3,4]) span (< 9) [1,2,3] == ([1,2,3],[]) span (< 0) [1,2,3] == ([],[1,2,3]) </PRE ><P ><TT ><A HREF="Prelude.html#v%3Aspan" >span</A ></TT > <TT >p xs</TT > is equivalent to <TT >(<TT ><A HREF="Prelude.html#v%3AtakeWhile" >takeWhile</A ></TT > p xs, <TT ><A HREF="Prelude.html#v%3AdropWhile" >dropWhile</A ></TT > p xs)</TT > </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:break" ><A NAME="v%3Abreak" ></A ></A ><B >break</B > :: (a -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A >) -> [a] -> ([a], [a])</TD ></TR ><TR ><TD CLASS="doc" ><P ><TT ><A HREF="Prelude.html#v%3Abreak" >break</A ></TT >, applied to a predicate <TT >p</TT > and a list <TT >xs</TT >, returns a tuple where first element is longest prefix (possibly empty) of <TT >xs</TT > of elements that <EM >do not satisfy</EM > <TT >p</TT > and second element is the remainder of the list: </P ><PRE > break (> 3) [1,2,3,4,1,2,3,4] == ([1,2,3],[4,1,2,3,4]) break (< 9) [1,2,3] == ([],[1,2,3]) break (> 9) [1,2,3] == ([1,2,3],[]) </PRE ><P ><TT ><A HREF="Prelude.html#v%3Abreak" >break</A ></TT > <TT >p</TT > is equivalent to <TT ><TT ><A HREF="Prelude.html#v%3Aspan" >span</A ></TT > (<TT ><A HREF="Prelude.html#v%3Anot" >not</A ></TT > . p)</TT >. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="18" ><A NAME="18" >Searching lists </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:elem" ><A NAME="v%3Aelem" ></A ></A ><B >elem</B > :: <A HREF="Prelude.html#t%3AEq" >Eq</A > a => a -> [a] -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Prelude.html#v%3Aelem" >elem</A ></TT > is the list membership predicate, usually written in infix form, e.g., <TT >x `elem` xs</TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:notElem" ><A NAME="v%3AnotElem" ></A ></A ><B >notElem</B > :: <A HREF="Prelude.html#t%3AEq" >Eq</A > a => a -> [a] -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Prelude.html#v%3AnotElem" >notElem</A ></TT > is the negation of <TT ><A HREF="Prelude.html#v%3Aelem" >elem</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:lookup" ><A NAME="v%3Alookup" ></A ></A ><B >lookup</B > :: <A HREF="Prelude.html#t%3AEq" >Eq</A > a => a -> [(a, b)] -> <A HREF="Prelude.html#t%3AMaybe" >Maybe</A > b</TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Prelude.html#v%3Alookup" >lookup</A ></TT > <TT >key assocs</TT > looks up a key in an association list. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="19" ><A NAME="19" >Zipping and unzipping lists </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:zip" ><A NAME="v%3Azip" ></A ></A ><B >zip</B > :: [a] -> [b] -> [(a, b)]</TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Prelude.html#v%3Azip" >zip</A ></TT > takes two lists and returns a list of corresponding pairs. If one input list is short, excess elements of the longer list are discarded. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:zip3" ><A NAME="v%3Azip3" ></A ></A ><B >zip3</B > :: [a] -> [b] -> [c] -> [(a, b, c)]</TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Prelude.html#v%3Azip3" >zip3</A ></TT > takes three lists and returns a list of triples, analogous to <TT ><A HREF="Prelude.html#v%3Azip" >zip</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:zipWith" ><A NAME="v%3AzipWith" ></A ></A ><B >zipWith</B > :: (a -> b -> c) -> [a] -> [b] -> [c]</TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Prelude.html#v%3AzipWith" >zipWith</A ></TT > generalises <TT ><A HREF="Prelude.html#v%3Azip" >zip</A ></TT > by zipping with the function given as the first argument, instead of a tupling function. For example, <TT ><TT ><A HREF="Prelude.html#v%3AzipWith" >zipWith</A ></TT > (+)</TT > is applied to two lists to produce the list of corresponding sums. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:zipWith3" ><A NAME="v%3AzipWith3" ></A ></A ><B >zipWith3</B > :: (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d]</TD ></TR ><TR ><TD CLASS="doc" >The <TT ><A HREF="Prelude.html#v%3AzipWith3" >zipWith3</A ></TT > function takes a function which combines three elements, as well as three lists and returns a list of their point-wise combination, analogous to <TT ><A HREF="Prelude.html#v%3AzipWith" >zipWith</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:unzip" ><A NAME="v%3Aunzip" ></A ></A ><B >unzip</B > :: [(a, b)] -> ([a], [b])</TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Prelude.html#v%3Aunzip" >unzip</A ></TT > transforms a list of pairs into a list of first components and a list of second components. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:unzip3" ><A NAME="v%3Aunzip3" ></A ></A ><B >unzip3</B > :: [(a, b, c)] -> ([a], [b], [c])</TD ></TR ><TR ><TD CLASS="doc" >The <TT ><A HREF="Prelude.html#v%3Aunzip3" >unzip3</A ></TT > function takes a list of triples and returns three lists, analogous to <TT ><A HREF="Prelude.html#v%3Aunzip" >unzip</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="20" ><A NAME="20" >Functions on strings </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:lines" ><A NAME="v%3Alines" ></A ></A ><B >lines</B > :: <A HREF="Prelude.html#t%3AString" >String</A > -> [<A HREF="Prelude.html#t%3AString" >String</A >]</TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Prelude.html#v%3Alines" >lines</A ></TT > breaks a string up into a list of strings at newline characters. The resulting strings do not contain newlines. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:words" ><A NAME="v%3Awords" ></A ></A ><B >words</B > :: <A HREF="Prelude.html#t%3AString" >String</A > -> [<A HREF="Prelude.html#t%3AString" >String</A >]</TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Prelude.html#v%3Awords" >words</A ></TT > breaks a string up into a list of words, which were delimited by white space. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:unlines" ><A NAME="v%3Aunlines" ></A ></A ><B >unlines</B > :: [<A HREF="Prelude.html#t%3AString" >String</A >] -> <A HREF="Prelude.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Prelude.html#v%3Aunlines" >unlines</A ></TT > is an inverse operation to <TT ><A HREF="Prelude.html#v%3Alines" >lines</A ></TT >. It joins lines, after appending a terminating newline to each. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:unwords" ><A NAME="v%3Aunwords" ></A ></A ><B >unwords</B > :: [<A HREF="Prelude.html#t%3AString" >String</A >] -> <A HREF="Prelude.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Prelude.html#v%3Aunwords" >unwords</A ></TT > is an inverse operation to <TT ><A HREF="Prelude.html#v%3Awords" >words</A ></TT >. It joins words with separating spaces. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="21" ><A NAME="21" >Converting to and from <TT >String</TT > </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="22" ><A NAME="22" >Converting to <TT >String</TT > </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:ShowS" ><A NAME="t%3AShowS" ></A ></A ><B >ShowS</B > = <A HREF="Prelude.html#t%3AString" >String</A > -> <A HREF="Prelude.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="doc" >The <TT >shows</TT > functions return a function that prepends the output <TT ><A HREF="Prelude.html#t%3AString" >String</A ></TT > to an existing <TT ><A HREF="Prelude.html#t%3AString" >String</A ></TT >. This allows constant-time concatenation of results using function composition. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A NAME="t:Show" ><A NAME="t%3AShow" ></A ></A ><B >Show</B > a <SPAN CLASS="keyword" >where</SPAN ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >Conversion of values to readable <TT ><A HREF="Prelude.html#t%3AString" >String</A ></TT >s. </P ><P >Minimal complete definition: <TT ><A HREF="Prelude.html#v%3AshowsPrec" >showsPrec</A ></TT > or <TT ><A HREF="Prelude.html#v%3Ashow" >show</A ></TT >. </P ><P >Derived instances of <TT ><A HREF="Prelude.html#t%3AShow" >Show</A ></TT > have the following properties, which are compatible with derived instances of Text.Read.Read: </P ><UL ><LI > The result of <TT ><A HREF="Prelude.html#v%3Ashow" >show</A ></TT > is a syntactically correct Haskell expression containing only constants, given the fixity declarations in force at the point where the type is declared. It contains only the constructor names defined in the data type, parentheses, and spaces. When labelled constructor fields are used, braces, commas, field names, and equal signs are also used. </LI ><LI > If the constructor is defined to be an infix operator, then <TT ><A HREF="Prelude.html#v%3AshowsPrec" >showsPrec</A ></TT > will produce infix applications of the constructor. </LI ><LI > the representation will be enclosed in parentheses if the precedence of the top-level constructor in <TT >x</TT > is less than <TT >d</TT > (associativity is ignored). Thus, if <TT >d</TT > is <TT >0</TT > then the result is never surrounded in parentheses; if <TT >d</TT > is <TT >11</TT > it is always surrounded in parentheses, unless it is an atomic expression. </LI ><LI > If the constructor is defined using record syntax, then <TT ><A HREF="Prelude.html#v%3Ashow" >show</A ></TT > will produce the record-syntax form, with the fields given in the same order as the original declaration. </LI ></UL ><P >For example, given the declarations </P ><PRE > infixr 5 :^: data Tree a = Leaf a | Tree a :^: Tree a </PRE ><P >the derived instance of <TT ><A HREF="Prelude.html#t%3AShow" >Show</A ></TT > is equivalent to </P ><PRE > instance (Show a) => Show (Tree a) where showsPrec d (Leaf m) = showParen (d > app_prec) $ showString "Leaf " . showsPrec (app_prec+1) m where app_prec = 10 showsPrec d (u :^: v) = showParen (d > up_prec) $ showsPrec (up_prec+1) u . showString " :^: " . showsPrec (up_prec+1) v where up_prec = 5 </PRE ><P >Note that right-associativity of <TT >:^:</TT > is ignored. For example, </P ><UL ><LI > <TT ><TT ><A HREF="Prelude.html#v%3Ashow" >show</A ></TT > (Leaf 1 :^: Leaf 2 :^: Leaf 3)</TT > produces the string <TT >"Leaf 1 :^: (Leaf 2 :^: Leaf 3)"</TT >. </LI ></UL ></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:showsPrec" ><A NAME="v%3AshowsPrec" ></A ></A ><B >showsPrec</B ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="arg" >:: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ><TD CLASS="rdoc" >the operator precedence of the enclosing context (a number from <TT >0</TT > to <TT >11</TT >). Function application has precedence <TT >10</TT >. </TD ></TR ><TR ><TD CLASS="arg" >-> a</TD ><TD CLASS="rdoc" >the value to be converted to a <TT ><A HREF="Prelude.html#t%3AString" >String</A ></TT > </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="Prelude.html#t%3AShowS" >ShowS</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="ndoc" COLSPAN="2" ><P >Convert a value to a readable <TT ><A HREF="Prelude.html#t%3AString" >String</A ></TT >. </P ><P ><TT ><A HREF="Prelude.html#v%3AshowsPrec" >showsPrec</A ></TT > should satisfy the law </P ><PRE > showsPrec d x r ++ s == showsPrec d x (r ++ s) </PRE ><P >Derived instances of Text.Read.Read and <TT ><A HREF="Prelude.html#t%3AShow" >Show</A ></TT > satisfy the following: </P ><UL ><LI > <TT >(x,"")</TT > is an element of <TT >(Text.Read.readsPrec d (<TT ><A HREF="Prelude.html#v%3AshowsPrec" >showsPrec</A ></TT > d x ""))</TT >. </LI ></UL ><P >That is, Text.Read.readsPrec parses the string produced by <TT ><A HREF="Prelude.html#v%3AshowsPrec" >showsPrec</A ></TT >, and delivers the value that <TT ><A HREF="Prelude.html#v%3AshowsPrec" >showsPrec</A ></TT > started with. </P ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:show" ><A NAME="v%3Ashow" ></A ></A ><B >show</B > :: a -> <A HREF="Prelude.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="doc" >A specialised variant of <TT ><A HREF="Prelude.html#v%3AshowsPrec" >showsPrec</A ></TT >, using precedence context zero, and returning an ordinary <TT ><A HREF="Prelude.html#t%3AString" >String</A ></TT >. </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:showList" ><A NAME="v%3AshowList" ></A ></A ><B >showList</B > :: [a] -> <A HREF="Prelude.html#t%3AShowS" >ShowS</A ></TD ></TR ><TR ><TD CLASS="doc" >The method <TT ><A HREF="Prelude.html#v%3AshowList" >showList</A ></TT > is provided to allow the programmer to give a specialised way of showing lists of values. For example, this is used by the predefined <TT ><A HREF="Prelude.html#t%3AShow" >Show</A ></TT > instance of the <TT ><A HREF="../ghc-prim/GHC-Types.html#t%3AChar" >Char</A ></TT > type, where values of type <TT ><A HREF="Prelude.html#t%3AString" >String</A ></TT > should be shown in double quotes, rather than between square brackets. </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:Show')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Show" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="../ghc-prim/GHC-Types.html#t%3ADouble" >Double</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AFloat" >Float</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Data-Int.html#t%3AInt8" >Int8</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Data-Int.html#t%3AInt16" >Int16</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Data-Int.html#t%3AInt32" >Int32</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Data-Int.html#t%3AInt64" >Int64</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="../ghc-prim/GHC-Ordering.html#t%3AOrdering" >Ordering</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Data-Word.html#t%3AWord" >Word</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Data-Word.html#t%3AWord8" >Word8</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Data-Word.html#t%3AWord16" >Word16</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Data-Word.html#t%3AWord32" >Word32</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Data-Word.html#t%3AWord64" >Word64</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Data-Typeable.html#t%3ATyCon" >TyCon</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Control-Exception-Base.html#t%3AArithException" >ArithException</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Control-Exception-Base.html#t%3AErrorCall" >ErrorCall</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Control-Exception-Base.html#t%3ASomeException" >SomeException</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Text-Read-Lex.html#t%3ALexeme" >Lexeme</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Foreign-C-Types.html#t%3ACUIntMax" >CUIntMax</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Foreign-C-Types.html#t%3ACIntMax" >CIntMax</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Foreign-C-Types.html#t%3ACUIntPtr" >CUIntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Foreign-C-Types.html#t%3ACIntPtr" >CIntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Foreign-C-Types.html#t%3ACTime" >CTime</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Foreign-C-Types.html#t%3ACClock" >CClock</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Foreign-C-Types.html#t%3ACSigAtomic" >CSigAtomic</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Foreign-C-Types.html#t%3ACWchar" >CWchar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Foreign-C-Types.html#t%3ACSize" >CSize</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Foreign-C-Types.html#t%3ACPtrdiff" >CPtrdiff</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Foreign-C-Types.html#t%3ACLDouble" >CLDouble</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Foreign-C-Types.html#t%3ACDouble" >CDouble</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Foreign-C-Types.html#t%3ACFloat" >CFloat</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Foreign-C-Types.html#t%3ACULLong" >CULLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Foreign-C-Types.html#t%3ACLLong" >CLLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Foreign-C-Types.html#t%3ACULong" >CULong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Foreign-C-Types.html#t%3ACLong" >CLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Foreign-C-Types.html#t%3ACUInt" >CUInt</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Foreign-C-Types.html#t%3ACInt" >CInt</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Foreign-C-Types.html#t%3ACUShort" >CUShort</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Foreign-C-Types.html#t%3ACShort" >CShort</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Foreign-C-Types.html#t%3ACUChar" >CUChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Foreign-C-Types.html#t%3ACSChar" >CSChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Foreign-C-Types.html#t%3ACChar" >CChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="System-IO.html#t%3AIOMode" >IOMode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="System-IO-Error.html#t%3AIOErrorType" >IOErrorType</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Control-Exception-Base.html#t%3AIOException" >IOException</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="System-Exit.html#t%3AExitCode" >ExitCode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Control-Exception-Base.html#t%3AArrayException" >ArrayException</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Control-Exception-Base.html#t%3AAsyncException" >AsyncException</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Control-Exception-Base.html#t%3AAssertionFailed" >AssertionFailed</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Control-Exception-Base.html#t%3ADeadlock" >Deadlock</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Control-Exception-Base.html#t%3ABlockedIndefinitely" >BlockedIndefinitely</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Control-Exception-Base.html#t%3ABlockedOnDeadMVar" >BlockedOnDeadMVar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="System-IO.html#t%3ABufferMode" >BufferMode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > HandleType</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="System-IO.html#t%3AHandle" >Handle</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Data-Char.html#t%3AGeneralCategory" >GeneralCategory</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > HashData</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Data-Dynamic.html#t%3ADynamic" >Dynamic</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Foreign-Ptr.html#t%3AIntPtr" >IntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Foreign-Ptr.html#t%3AWordPtr" >WordPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="System-Posix-Types.html#t%3AFd" >Fd</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="System-Posix-Types.html#t%3ACRLim" >CRLim</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="System-Posix-Types.html#t%3ACTcflag" >CTcflag</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="System-Posix-Types.html#t%3ACSpeed" >CSpeed</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="System-Posix-Types.html#t%3ACCc" >CCc</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="System-Posix-Types.html#t%3ACUid" >CUid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="System-Posix-Types.html#t%3ACNlink" >CNlink</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="System-Posix-Types.html#t%3ACGid" >CGid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="System-Posix-Types.html#t%3ACSsize" >CSsize</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="System-Posix-Types.html#t%3ACPid" >CPid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="System-Posix-Types.html#t%3ACOff" >COff</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="System-Posix-Types.html#t%3ACMode" >CMode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="System-Posix-Types.html#t%3ACIno" >CIno</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="System-Posix-Types.html#t%3ACDev" >CDev</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="GHC-Conc.html#t%3AThreadStatus" >ThreadStatus</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="GHC-Conc.html#t%3ABlockReason" >BlockReason</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Control-Concurrent.html#t%3AThreadId" >ThreadId</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Control-Exception-Base.html#t%3ANestedAtomically" >NestedAtomically</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Control-Exception-Base.html#t%3ANonTermination" >NonTermination</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Control-Exception-Base.html#t%3ANoMethodError" >NoMethodError</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Control-Exception-Base.html#t%3ARecUpdError" >RecUpdError</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Control-Exception-Base.html#t%3ARecConError" >RecConError</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Control-Exception-Base.html#t%3ARecSelError" >RecSelError</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Control-Exception-Base.html#t%3APatternMatchFail" >PatternMatchFail</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="System-IO.html#t%3ASeekMode" >SeekMode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="System-IO.html#t%3AHandlePosn" >HandlePosn</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Control-OldException.html#t%3AException" >Exception</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Data-Data.html#t%3AFixity" >Fixity</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Data-Data.html#t%3AConstrRep" >ConstrRep</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Data-Data.html#t%3ADataRep" >DataRep</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Data-Data.html#t%3AConstr" >Constr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Data-Data.html#t%3ADataType" >DataType</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Data-Monoid.html#t%3AAny" >Any</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Data-Monoid.html#t%3AAll" >All</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > Timeout</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > <A HREF="Data-Version.html#t%3AVersion" >Version</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > a => <A HREF="Prelude.html#t%3AShow" >Show</A > ([] a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AIntegral" >Integral</A > a => <A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="Data-Ratio.html#t%3ARatio" >Ratio</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="Foreign-Ptr.html#t%3APtr" >Ptr</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="Foreign-Ptr.html#t%3AFunPtr" >FunPtr</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > a => <A HREF="Prelude.html#t%3AShow" >Show</A > ([::] a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > a => <A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="Prelude.html#t%3AMaybe" >Maybe</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="Foreign-ForeignPtr.html#t%3AForeignPtr" >ForeignPtr</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARealFloat" >RealFloat</A > a => <A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="Data-Complex.html#t%3AComplex" >Complex</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Fixed.html#t%3AHasResolution" >HasResolution</A > a => <A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="Data-Fixed.html#t%3AFixed" >Fixed</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > a => <A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="Data-Monoid.html#t%3ALast" >Last</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > a => <A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="Data-Monoid.html#t%3AFirst" >First</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > a => <A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="Data-Monoid.html#t%3AProduct" >Product</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > a => <A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="Data-Monoid.html#t%3ASum" >Sum</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > a => <A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="Data-Monoid.html#t%3ADual" >Dual</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > (a -> b)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AShow" >Show</A > a, <A HREF="Prelude.html#t%3AShow" >Show</A > b) => <A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="Prelude.html#t%3AEither" >Either</A > a b)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AShow" >Show</A > a, <A HREF="Prelude.html#t%3AShow" >Show</A > b) => <A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%29" >(,)</A > a b)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="Control-Monad-ST.html#t%3AST" >ST</A > s a)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="GHC-Arr.html#t%3AIx" >Ix</A > a, <A HREF="Prelude.html#t%3AShow" >Show</A > a, <A HREF="Prelude.html#t%3AShow" >Show</A > b) => <A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="GHC-Arr.html#t%3AArray" >Array</A > a b)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AShow" >Show</A > a, <A HREF="Prelude.html#t%3AShow" >Show</A > b, <A HREF="Prelude.html#t%3AShow" >Show</A > c) => <A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%29" >(,,)</A > a b c)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AShow" >Show</A > a, <A HREF="Prelude.html#t%3AShow" >Show</A > b, <A HREF="Prelude.html#t%3AShow" >Show</A > c, <A HREF="Prelude.html#t%3AShow" >Show</A > d) => <A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%29" >(,,,)</A > a b c d)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AShow" >Show</A > a, <A HREF="Prelude.html#t%3AShow" >Show</A > b, <A HREF="Prelude.html#t%3AShow" >Show</A > c, <A HREF="Prelude.html#t%3AShow" >Show</A > d, <A HREF="Prelude.html#t%3AShow" >Show</A > e) => <A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%29" >(,,,,)</A > a b c d e)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AShow" >Show</A > a, <A HREF="Prelude.html#t%3AShow" >Show</A > b, <A HREF="Prelude.html#t%3AShow" >Show</A > c, <A HREF="Prelude.html#t%3AShow" >Show</A > d, <A HREF="Prelude.html#t%3AShow" >Show</A > e, <A HREF="Prelude.html#t%3AShow" >Show</A > f) => <A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%29" >(,,,,,)</A > a b c d e f)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AShow" >Show</A > a, <A HREF="Prelude.html#t%3AShow" >Show</A > b, <A HREF="Prelude.html#t%3AShow" >Show</A > c, <A HREF="Prelude.html#t%3AShow" >Show</A > d, <A HREF="Prelude.html#t%3AShow" >Show</A > e, <A HREF="Prelude.html#t%3AShow" >Show</A > f, <A HREF="Prelude.html#t%3AShow" >Show</A > g) => <A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%29" >(,,,,,,)</A > a b c d e f g)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AShow" >Show</A > a, <A HREF="Prelude.html#t%3AShow" >Show</A > b, <A HREF="Prelude.html#t%3AShow" >Show</A > c, <A HREF="Prelude.html#t%3AShow" >Show</A > d, <A HREF="Prelude.html#t%3AShow" >Show</A > e, <A HREF="Prelude.html#t%3AShow" >Show</A > f, <A HREF="Prelude.html#t%3AShow" >Show</A > g, <A HREF="Prelude.html#t%3AShow" >Show</A > h) => <A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,)</A > a b c d e f g h)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AShow" >Show</A > a, <A HREF="Prelude.html#t%3AShow" >Show</A > b, <A HREF="Prelude.html#t%3AShow" >Show</A > c, <A HREF="Prelude.html#t%3AShow" >Show</A > d, <A HREF="Prelude.html#t%3AShow" >Show</A > e, <A HREF="Prelude.html#t%3AShow" >Show</A > f, <A HREF="Prelude.html#t%3AShow" >Show</A > g, <A HREF="Prelude.html#t%3AShow" >Show</A > h, <A HREF="Prelude.html#t%3AShow" >Show</A > i) => <A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,)</A > a b c d e f g h i)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AShow" >Show</A > a, <A HREF="Prelude.html#t%3AShow" >Show</A > b, <A HREF="Prelude.html#t%3AShow" >Show</A > c, <A HREF="Prelude.html#t%3AShow" >Show</A > d, <A HREF="Prelude.html#t%3AShow" >Show</A > e, <A HREF="Prelude.html#t%3AShow" >Show</A > f, <A HREF="Prelude.html#t%3AShow" >Show</A > g, <A HREF="Prelude.html#t%3AShow" >Show</A > h, <A HREF="Prelude.html#t%3AShow" >Show</A > i, <A HREF="Prelude.html#t%3AShow" >Show</A > j) => <A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,)</A > a b c d e f g h i j)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AShow" >Show</A > a, <A HREF="Prelude.html#t%3AShow" >Show</A > b, <A HREF="Prelude.html#t%3AShow" >Show</A > c, <A HREF="Prelude.html#t%3AShow" >Show</A > d, <A HREF="Prelude.html#t%3AShow" >Show</A > e, <A HREF="Prelude.html#t%3AShow" >Show</A > f, <A HREF="Prelude.html#t%3AShow" >Show</A > g, <A HREF="Prelude.html#t%3AShow" >Show</A > h, <A HREF="Prelude.html#t%3AShow" >Show</A > i, <A HREF="Prelude.html#t%3AShow" >Show</A > j, <A HREF="Prelude.html#t%3AShow" >Show</A > k) => <A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,,)</A > a b c d e f g h i j k)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AShow" >Show</A > a, <A HREF="Prelude.html#t%3AShow" >Show</A > b, <A HREF="Prelude.html#t%3AShow" >Show</A > c, <A HREF="Prelude.html#t%3AShow" >Show</A > d, <A HREF="Prelude.html#t%3AShow" >Show</A > e, <A HREF="Prelude.html#t%3AShow" >Show</A > f, <A HREF="Prelude.html#t%3AShow" >Show</A > g, <A HREF="Prelude.html#t%3AShow" >Show</A > h, <A HREF="Prelude.html#t%3AShow" >Show</A > i, <A HREF="Prelude.html#t%3AShow" >Show</A > j, <A HREF="Prelude.html#t%3AShow" >Show</A > k, <A HREF="Prelude.html#t%3AShow" >Show</A > l) => <A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,,,)</A > a b c d e f g h i j k l)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AShow" >Show</A > a, <A HREF="Prelude.html#t%3AShow" >Show</A > b, <A HREF="Prelude.html#t%3AShow" >Show</A > c, <A HREF="Prelude.html#t%3AShow" >Show</A > d, <A HREF="Prelude.html#t%3AShow" >Show</A > e, <A HREF="Prelude.html#t%3AShow" >Show</A > f, <A HREF="Prelude.html#t%3AShow" >Show</A > g, <A HREF="Prelude.html#t%3AShow" >Show</A > h, <A HREF="Prelude.html#t%3AShow" >Show</A > i, <A HREF="Prelude.html#t%3AShow" >Show</A > j, <A HREF="Prelude.html#t%3AShow" >Show</A > k, <A HREF="Prelude.html#t%3AShow" >Show</A > l, <A HREF="Prelude.html#t%3AShow" >Show</A > m) => <A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,,,,)</A > a b c d e f g h i j k l m)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AShow" >Show</A > a, <A HREF="Prelude.html#t%3AShow" >Show</A > b, <A HREF="Prelude.html#t%3AShow" >Show</A > c, <A HREF="Prelude.html#t%3AShow" >Show</A > d, <A HREF="Prelude.html#t%3AShow" >Show</A > e, <A HREF="Prelude.html#t%3AShow" >Show</A > f, <A HREF="Prelude.html#t%3AShow" >Show</A > g, <A HREF="Prelude.html#t%3AShow" >Show</A > h, <A HREF="Prelude.html#t%3AShow" >Show</A > i, <A HREF="Prelude.html#t%3AShow" >Show</A > j, <A HREF="Prelude.html#t%3AShow" >Show</A > k, <A HREF="Prelude.html#t%3AShow" >Show</A > l, <A HREF="Prelude.html#t%3AShow" >Show</A > m, <A HREF="Prelude.html#t%3AShow" >Show</A > n) => <A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,,,,,)</A > a b c d e f g h i j k l m n)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AShow" >Show</A > a, <A HREF="Prelude.html#t%3AShow" >Show</A > b, <A HREF="Prelude.html#t%3AShow" >Show</A > c, <A HREF="Prelude.html#t%3AShow" >Show</A > d, <A HREF="Prelude.html#t%3AShow" >Show</A > e, <A HREF="Prelude.html#t%3AShow" >Show</A > f, <A HREF="Prelude.html#t%3AShow" >Show</A > g, <A HREF="Prelude.html#t%3AShow" >Show</A > h, <A HREF="Prelude.html#t%3AShow" >Show</A > i, <A HREF="Prelude.html#t%3AShow" >Show</A > j, <A HREF="Prelude.html#t%3AShow" >Show</A > k, <A HREF="Prelude.html#t%3AShow" >Show</A > l, <A HREF="Prelude.html#t%3AShow" >Show</A > m, <A HREF="Prelude.html#t%3AShow" >Show</A > n, <A HREF="Prelude.html#t%3AShow" >Show</A > o) => <A HREF="Prelude.html#t%3AShow" >Show</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,,,,,,)</A > a b c d e f g h i j k l m n o)</TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:shows" ><A NAME="v%3Ashows" ></A ></A ><B >shows</B > :: <A HREF="Prelude.html#t%3AShow" >Show</A > a => a -> <A HREF="Prelude.html#t%3AShowS" >ShowS</A ></TD ></TR ><TR ><TD CLASS="doc" >equivalent to <TT ><A HREF="Prelude.html#v%3AshowsPrec" >showsPrec</A ></TT > with a precedence of 0. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:showChar" ><A NAME="v%3AshowChar" ></A ></A ><B >showChar</B > :: <A HREF="../ghc-prim/GHC-Types.html#t%3AChar" >Char</A > -> <A HREF="Prelude.html#t%3AShowS" >ShowS</A ></TD ></TR ><TR ><TD CLASS="doc" >utility function converting a <TT ><A HREF="../ghc-prim/GHC-Types.html#t%3AChar" >Char</A ></TT > to a show function that simply prepends the character unchanged. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:showString" ><A NAME="v%3AshowString" ></A ></A ><B >showString</B > :: <A HREF="Prelude.html#t%3AString" >String</A > -> <A HREF="Prelude.html#t%3AShowS" >ShowS</A ></TD ></TR ><TR ><TD CLASS="doc" >utility function converting a <TT ><A HREF="Prelude.html#t%3AString" >String</A ></TT > to a show function that simply prepends the string unchanged. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:showParen" ><A NAME="v%3AshowParen" ></A ></A ><B >showParen</B > :: <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > -> <A HREF="Prelude.html#t%3AShowS" >ShowS</A > -> <A HREF="Prelude.html#t%3AShowS" >ShowS</A ></TD ></TR ><TR ><TD CLASS="doc" >utility function that surrounds the inner show function with parentheses when the <TT ><A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TT > parameter is <TT ><A HREF="../ghc-prim/GHC-Bool.html#v%3ATrue" >True</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="23" ><A NAME="23" >Converting from <TT >String</TT > </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:ReadS" ><A NAME="t%3AReadS" ></A ></A ><B >ReadS</B > a = <A HREF="Prelude.html#t%3AString" >String</A > -> [(a, <A HREF="Prelude.html#t%3AString" >String</A >)]</TD ></TR ><TR ><TD CLASS="doc" ><P >A parser for a type <TT >a</TT >, represented as a function that takes a <TT ><A HREF="Prelude.html#t%3AString" >String</A ></TT > and returns a list of possible parses as <TT >(a,<TT ><A HREF="Prelude.html#t%3AString" >String</A ></TT >)</TT > pairs. </P ><P >Note that this kind of backtracking parser is very inefficient; reading a large structure may be quite slow (cf <TT ><A HREF="Text-ParserCombinators-ReadP.html#t%3AReadP" >ReadP</A ></TT >). </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A NAME="t:Read" ><A NAME="t%3ARead" ></A ></A ><B >Read</B > a <SPAN CLASS="keyword" >where</SPAN ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >Parsing of <TT ><A HREF="Prelude.html#t%3AString" >String</A ></TT >s, producing values. </P ><P >Minimal complete definition: <TT ><A HREF="Prelude.html#v%3AreadsPrec" >readsPrec</A ></TT > (or, for GHC only, <TT ><A HREF="Text-Read.html#v%3AreadPrec" >readPrec</A ></TT >) </P ><P >Derived instances of <TT ><A HREF="Prelude.html#t%3ARead" >Read</A ></TT > make the following assumptions, which derived instances of Text.Show.Show obey: </P ><UL ><LI > If the constructor is defined to be an infix operator, then the derived <TT ><A HREF="Prelude.html#t%3ARead" >Read</A ></TT > instance will parse only infix applications of the constructor (not the prefix form). </LI ><LI > Associativity is not used to reduce the occurrence of parentheses, although precedence may be. </LI ><LI > If the constructor is defined using record syntax, the derived <TT ><A HREF="Prelude.html#t%3ARead" >Read</A ></TT > will parse only the record-syntax form, and furthermore, the fields must be given in the same order as the original declaration. </LI ><LI > The derived <TT ><A HREF="Prelude.html#t%3ARead" >Read</A ></TT > instance allows arbitrary Haskell whitespace between tokens of the input string. Extra parentheses are also allowed. </LI ></UL ><P >For example, given the declarations </P ><PRE > infixr 5 :^: data Tree a = Leaf a | Tree a :^: Tree a </PRE ><P >the derived instance of <TT ><A HREF="Prelude.html#t%3ARead" >Read</A ></TT > in Haskell 98 is equivalent to </P ><PRE > instance (Read a) => Read (Tree a) where readsPrec d r = readParen (d > app_prec) (\r -> [(Leaf m,t) | ("Leaf",s) <- lex r, (m,t) <- readsPrec (app_prec+1) s]) r ++ readParen (d > up_prec) (\r -> [(u:^:v,w) | (u,s) <- readsPrec (up_prec+1) r, (":^:",t) <- lex s, (v,w) <- readsPrec (up_prec+1) t]) r where app_prec = 10 up_prec = 5 </PRE ><P >Note that right-associativity of <TT >:^:</TT > is unused. </P ><P >The derived instance in GHC is equivalent to </P ><PRE > instance (Read a) => Read (Tree a) where readPrec = parens $ (prec app_prec $ do Ident "Leaf" <- lexP m <- step readPrec return (Leaf m)) +++ (prec up_prec $ do u <- step readPrec Symbol ":^:" <- lexP v <- step readPrec return (u :^: v)) where app_prec = 10 up_prec = 5 readListPrec = readListPrecDefault </PRE ></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:readsPrec" ><A NAME="v%3AreadsPrec" ></A ></A ><B >readsPrec</B ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="arg" >:: <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ><TD CLASS="rdoc" >the operator precedence of the enclosing context (a number from <TT >0</TT > to <TT >11</TT >). Function application has precedence <TT >10</TT >. </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="Prelude.html#t%3AReadS" >ReadS</A > a</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="ndoc" COLSPAN="2" ><P >attempts to parse a value from the front of the string, returning a list of (parsed value, remaining string) pairs. If there is no successful parse, the returned list is empty. </P ><P >Derived instances of <TT ><A HREF="Prelude.html#t%3ARead" >Read</A ></TT > and Text.Show.Show satisfy the following: </P ><UL ><LI > <TT >(x,"")</TT > is an element of <TT >(<TT ><A HREF="Prelude.html#v%3AreadsPrec" >readsPrec</A ></TT > d (Text.Show.showsPrec d x ""))</TT >. </LI ></UL ><P >That is, <TT ><A HREF="Prelude.html#v%3AreadsPrec" >readsPrec</A ></TT > parses the string produced by Text.Show.showsPrec, and delivers the value that Text.Show.showsPrec started with. </P ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:readList" ><A NAME="v%3AreadList" ></A ></A ><B >readList</B > :: <A HREF="Prelude.html#t%3AReadS" >ReadS</A > [a]</TD ></TR ><TR ><TD CLASS="doc" >The method <TT ><A HREF="Prelude.html#v%3AreadList" >readList</A ></TT > is provided to allow the programmer to give a specialised way of parsing lists of values. For example, this is used by the predefined <TT ><A HREF="Prelude.html#t%3ARead" >Read</A ></TT > instance of the <TT ><A HREF="../ghc-prim/GHC-Types.html#t%3AChar" >Char</A ></TT > type, where values of type <TT ><A HREF="Prelude.html#t%3AString" >String</A ></TT > should be are expected to use double quotes, rather than square brackets. </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:Read')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Read" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="../ghc-prim/GHC-Types.html#t%3ADouble" >Double</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AFloat" >Float</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Data-Int.html#t%3AInt8" >Int8</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Data-Int.html#t%3AInt16" >Int16</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Data-Int.html#t%3AInt32" >Int32</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Data-Int.html#t%3AInt64" >Int64</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="../ghc-prim/GHC-Ordering.html#t%3AOrdering" >Ordering</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Data-Word.html#t%3AWord" >Word</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Data-Word.html#t%3AWord8" >Word8</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Data-Word.html#t%3AWord16" >Word16</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Data-Word.html#t%3AWord32" >Word32</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Data-Word.html#t%3AWord64" >Word64</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Text-Read-Lex.html#t%3ALexeme" >Lexeme</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACUIntMax" >CUIntMax</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACIntMax" >CIntMax</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACUIntPtr" >CUIntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACIntPtr" >CIntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACTime" >CTime</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACClock" >CClock</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACSigAtomic" >CSigAtomic</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACWchar" >CWchar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACSize" >CSize</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACPtrdiff" >CPtrdiff</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACLDouble" >CLDouble</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACDouble" >CDouble</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACFloat" >CFloat</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACULLong" >CULLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACLLong" >CLLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACULong" >CULong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACLong" >CLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACUInt" >CUInt</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACInt" >CInt</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACUShort" >CUShort</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACShort" >CShort</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACUChar" >CUChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACSChar" >CSChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Foreign-C-Types.html#t%3ACChar" >CChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="System-IO.html#t%3AIOMode" >IOMode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="System-Exit.html#t%3AExitCode" >ExitCode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="System-IO.html#t%3ABufferMode" >BufferMode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Data-Char.html#t%3AGeneralCategory" >GeneralCategory</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Foreign-Ptr.html#t%3AIntPtr" >IntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Foreign-Ptr.html#t%3AWordPtr" >WordPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="System-Posix-Types.html#t%3AFd" >Fd</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="System-Posix-Types.html#t%3ACRLim" >CRLim</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="System-Posix-Types.html#t%3ACTcflag" >CTcflag</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="System-Posix-Types.html#t%3ACSpeed" >CSpeed</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="System-Posix-Types.html#t%3ACCc" >CCc</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="System-Posix-Types.html#t%3ACUid" >CUid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="System-Posix-Types.html#t%3ACNlink" >CNlink</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="System-Posix-Types.html#t%3ACGid" >CGid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="System-Posix-Types.html#t%3ACSsize" >CSsize</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="System-Posix-Types.html#t%3ACPid" >CPid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="System-Posix-Types.html#t%3ACOff" >COff</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="System-Posix-Types.html#t%3ACMode" >CMode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="System-Posix-Types.html#t%3ACIno" >CIno</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="System-Posix-Types.html#t%3ACDev" >CDev</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="System-IO.html#t%3ASeekMode" >SeekMode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Data-Monoid.html#t%3AAny" >Any</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Data-Monoid.html#t%3AAll" >All</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > <A HREF="Data-Version.html#t%3AVersion" >Version</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > a => <A HREF="Prelude.html#t%3ARead" >Read</A > ([] a)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3AIntegral" >Integral</A > a, <A HREF="Prelude.html#t%3ARead" >Read</A > a) => <A HREF="Prelude.html#t%3ARead" >Read</A > (<A HREF="Data-Ratio.html#t%3ARatio" >Ratio</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > a => <A HREF="Prelude.html#t%3ARead" >Read</A > ([::] a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > a => <A HREF="Prelude.html#t%3ARead" >Read</A > (<A HREF="Prelude.html#t%3AMaybe" >Maybe</A > a)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ARead" >Read</A > a, <A HREF="Prelude.html#t%3ARealFloat" >RealFloat</A > a) => <A HREF="Prelude.html#t%3ARead" >Read</A > (<A HREF="Data-Complex.html#t%3AComplex" >Complex</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > a => <A HREF="Prelude.html#t%3ARead" >Read</A > (<A HREF="Data-Monoid.html#t%3ALast" >Last</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > a => <A HREF="Prelude.html#t%3ARead" >Read</A > (<A HREF="Data-Monoid.html#t%3AFirst" >First</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > a => <A HREF="Prelude.html#t%3ARead" >Read</A > (<A HREF="Data-Monoid.html#t%3AProduct" >Product</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > a => <A HREF="Prelude.html#t%3ARead" >Read</A > (<A HREF="Data-Monoid.html#t%3ASum" >Sum</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3ARead" >Read</A > a => <A HREF="Prelude.html#t%3ARead" >Read</A > (<A HREF="Data-Monoid.html#t%3ADual" >Dual</A > a)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ARead" >Read</A > a, <A HREF="Prelude.html#t%3ARead" >Read</A > b) => <A HREF="Prelude.html#t%3ARead" >Read</A > (<A HREF="Prelude.html#t%3AEither" >Either</A > a b)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ARead" >Read</A > a, <A HREF="Prelude.html#t%3ARead" >Read</A > b) => <A HREF="Prelude.html#t%3ARead" >Read</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%29" >(,)</A > a b)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="GHC-Arr.html#t%3AIx" >Ix</A > a, <A HREF="Prelude.html#t%3ARead" >Read</A > a, <A HREF="Prelude.html#t%3ARead" >Read</A > b) => <A HREF="Prelude.html#t%3ARead" >Read</A > (<A HREF="GHC-Arr.html#t%3AArray" >Array</A > a b)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ARead" >Read</A > a, <A HREF="Prelude.html#t%3ARead" >Read</A > b, <A HREF="Prelude.html#t%3ARead" >Read</A > c) => <A HREF="Prelude.html#t%3ARead" >Read</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%29" >(,,)</A > a b c)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ARead" >Read</A > a, <A HREF="Prelude.html#t%3ARead" >Read</A > b, <A HREF="Prelude.html#t%3ARead" >Read</A > c, <A HREF="Prelude.html#t%3ARead" >Read</A > d) => <A HREF="Prelude.html#t%3ARead" >Read</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%29" >(,,,)</A > a b c d)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ARead" >Read</A > a, <A HREF="Prelude.html#t%3ARead" >Read</A > b, <A HREF="Prelude.html#t%3ARead" >Read</A > c, <A HREF="Prelude.html#t%3ARead" >Read</A > d, <A HREF="Prelude.html#t%3ARead" >Read</A > e) => <A HREF="Prelude.html#t%3ARead" >Read</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%29" >(,,,,)</A > a b c d e)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ARead" >Read</A > a, <A HREF="Prelude.html#t%3ARead" >Read</A > b, <A HREF="Prelude.html#t%3ARead" >Read</A > c, <A HREF="Prelude.html#t%3ARead" >Read</A > d, <A HREF="Prelude.html#t%3ARead" >Read</A > e, <A HREF="Prelude.html#t%3ARead" >Read</A > f) => <A HREF="Prelude.html#t%3ARead" >Read</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%29" >(,,,,,)</A > a b c d e f)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ARead" >Read</A > a, <A HREF="Prelude.html#t%3ARead" >Read</A > b, <A HREF="Prelude.html#t%3ARead" >Read</A > c, <A HREF="Prelude.html#t%3ARead" >Read</A > d, <A HREF="Prelude.html#t%3ARead" >Read</A > e, <A HREF="Prelude.html#t%3ARead" >Read</A > f, <A HREF="Prelude.html#t%3ARead" >Read</A > g) => <A HREF="Prelude.html#t%3ARead" >Read</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%29" >(,,,,,,)</A > a b c d e f g)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ARead" >Read</A > a, <A HREF="Prelude.html#t%3ARead" >Read</A > b, <A HREF="Prelude.html#t%3ARead" >Read</A > c, <A HREF="Prelude.html#t%3ARead" >Read</A > d, <A HREF="Prelude.html#t%3ARead" >Read</A > e, <A HREF="Prelude.html#t%3ARead" >Read</A > f, <A HREF="Prelude.html#t%3ARead" >Read</A > g, <A HREF="Prelude.html#t%3ARead" >Read</A > h) => <A HREF="Prelude.html#t%3ARead" >Read</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,)</A > a b c d e f g h)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ARead" >Read</A > a, <A HREF="Prelude.html#t%3ARead" >Read</A > b, <A HREF="Prelude.html#t%3ARead" >Read</A > c, <A HREF="Prelude.html#t%3ARead" >Read</A > d, <A HREF="Prelude.html#t%3ARead" >Read</A > e, <A HREF="Prelude.html#t%3ARead" >Read</A > f, <A HREF="Prelude.html#t%3ARead" >Read</A > g, <A HREF="Prelude.html#t%3ARead" >Read</A > h, <A HREF="Prelude.html#t%3ARead" >Read</A > i) => <A HREF="Prelude.html#t%3ARead" >Read</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,)</A > a b c d e f g h i)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ARead" >Read</A > a, <A HREF="Prelude.html#t%3ARead" >Read</A > b, <A HREF="Prelude.html#t%3ARead" >Read</A > c, <A HREF="Prelude.html#t%3ARead" >Read</A > d, <A HREF="Prelude.html#t%3ARead" >Read</A > e, <A HREF="Prelude.html#t%3ARead" >Read</A > f, <A HREF="Prelude.html#t%3ARead" >Read</A > g, <A HREF="Prelude.html#t%3ARead" >Read</A > h, <A HREF="Prelude.html#t%3ARead" >Read</A > i, <A HREF="Prelude.html#t%3ARead" >Read</A > j) => <A HREF="Prelude.html#t%3ARead" >Read</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,)</A > a b c d e f g h i j)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ARead" >Read</A > a, <A HREF="Prelude.html#t%3ARead" >Read</A > b, <A HREF="Prelude.html#t%3ARead" >Read</A > c, <A HREF="Prelude.html#t%3ARead" >Read</A > d, <A HREF="Prelude.html#t%3ARead" >Read</A > e, <A HREF="Prelude.html#t%3ARead" >Read</A > f, <A HREF="Prelude.html#t%3ARead" >Read</A > g, <A HREF="Prelude.html#t%3ARead" >Read</A > h, <A HREF="Prelude.html#t%3ARead" >Read</A > i, <A HREF="Prelude.html#t%3ARead" >Read</A > j, <A HREF="Prelude.html#t%3ARead" >Read</A > k) => <A HREF="Prelude.html#t%3ARead" >Read</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,,)</A > a b c d e f g h i j k)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ARead" >Read</A > a, <A HREF="Prelude.html#t%3ARead" >Read</A > b, <A HREF="Prelude.html#t%3ARead" >Read</A > c, <A HREF="Prelude.html#t%3ARead" >Read</A > d, <A HREF="Prelude.html#t%3ARead" >Read</A > e, <A HREF="Prelude.html#t%3ARead" >Read</A > f, <A HREF="Prelude.html#t%3ARead" >Read</A > g, <A HREF="Prelude.html#t%3ARead" >Read</A > h, <A HREF="Prelude.html#t%3ARead" >Read</A > i, <A HREF="Prelude.html#t%3ARead" >Read</A > j, <A HREF="Prelude.html#t%3ARead" >Read</A > k, <A HREF="Prelude.html#t%3ARead" >Read</A > l) => <A HREF="Prelude.html#t%3ARead" >Read</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,,,)</A > a b c d e f g h i j k l)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ARead" >Read</A > a, <A HREF="Prelude.html#t%3ARead" >Read</A > b, <A HREF="Prelude.html#t%3ARead" >Read</A > c, <A HREF="Prelude.html#t%3ARead" >Read</A > d, <A HREF="Prelude.html#t%3ARead" >Read</A > e, <A HREF="Prelude.html#t%3ARead" >Read</A > f, <A HREF="Prelude.html#t%3ARead" >Read</A > g, <A HREF="Prelude.html#t%3ARead" >Read</A > h, <A HREF="Prelude.html#t%3ARead" >Read</A > i, <A HREF="Prelude.html#t%3ARead" >Read</A > j, <A HREF="Prelude.html#t%3ARead" >Read</A > k, <A HREF="Prelude.html#t%3ARead" >Read</A > l, <A HREF="Prelude.html#t%3ARead" >Read</A > m) => <A HREF="Prelude.html#t%3ARead" >Read</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,,,,)</A > a b c d e f g h i j k l m)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ARead" >Read</A > a, <A HREF="Prelude.html#t%3ARead" >Read</A > b, <A HREF="Prelude.html#t%3ARead" >Read</A > c, <A HREF="Prelude.html#t%3ARead" >Read</A > d, <A HREF="Prelude.html#t%3ARead" >Read</A > e, <A HREF="Prelude.html#t%3ARead" >Read</A > f, <A HREF="Prelude.html#t%3ARead" >Read</A > g, <A HREF="Prelude.html#t%3ARead" >Read</A > h, <A HREF="Prelude.html#t%3ARead" >Read</A > i, <A HREF="Prelude.html#t%3ARead" >Read</A > j, <A HREF="Prelude.html#t%3ARead" >Read</A > k, <A HREF="Prelude.html#t%3ARead" >Read</A > l, <A HREF="Prelude.html#t%3ARead" >Read</A > m, <A HREF="Prelude.html#t%3ARead" >Read</A > n) => <A HREF="Prelude.html#t%3ARead" >Read</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,,,,,)</A > a b c d e f g h i j k l m n)</TD ></TR ><TR ><TD CLASS="decl" >(<A HREF="Prelude.html#t%3ARead" >Read</A > a, <A HREF="Prelude.html#t%3ARead" >Read</A > b, <A HREF="Prelude.html#t%3ARead" >Read</A > c, <A HREF="Prelude.html#t%3ARead" >Read</A > d, <A HREF="Prelude.html#t%3ARead" >Read</A > e, <A HREF="Prelude.html#t%3ARead" >Read</A > f, <A HREF="Prelude.html#t%3ARead" >Read</A > g, <A HREF="Prelude.html#t%3ARead" >Read</A > h, <A HREF="Prelude.html#t%3ARead" >Read</A > i, <A HREF="Prelude.html#t%3ARead" >Read</A > j, <A HREF="Prelude.html#t%3ARead" >Read</A > k, <A HREF="Prelude.html#t%3ARead" >Read</A > l, <A HREF="Prelude.html#t%3ARead" >Read</A > m, <A HREF="Prelude.html#t%3ARead" >Read</A > n, <A HREF="Prelude.html#t%3ARead" >Read</A > o) => <A HREF="Prelude.html#t%3ARead" >Read</A > (<A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%2C%29" >(,,,,,,,,,,,,,,)</A > a b c d e f g h i j k l m n o)</TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:reads" ><A NAME="v%3Areads" ></A ></A ><B >reads</B > :: <A HREF="Prelude.html#t%3ARead" >Read</A > a => <A HREF="Prelude.html#t%3AReadS" >ReadS</A > a</TD ></TR ><TR ><TD CLASS="doc" >equivalent to <TT ><A HREF="Prelude.html#v%3AreadsPrec" >readsPrec</A ></TT > with a precedence of 0. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:readParen" ><A NAME="v%3AreadParen" ></A ></A ><B >readParen</B > :: <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > -> <A HREF="Prelude.html#t%3AReadS" >ReadS</A > a -> <A HREF="Prelude.html#t%3AReadS" >ReadS</A > a</TD ></TR ><TR ><TD CLASS="doc" ><P ><TT ><TT ><A HREF="Prelude.html#v%3AreadParen" >readParen</A ></TT > <TT ><A HREF="../ghc-prim/GHC-Bool.html#v%3ATrue" >True</A ></TT > p</TT > parses what <TT >p</TT > parses, but surrounded with parentheses. </P ><P ><TT ><TT ><A HREF="Prelude.html#v%3AreadParen" >readParen</A ></TT > <TT ><A HREF="../ghc-prim/GHC-Bool.html#v%3AFalse" >False</A ></TT > p</TT > parses what <TT >p</TT > parses, but optionally surrounded with parentheses. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:read" ><A NAME="v%3Aread" ></A ></A ><B >read</B > :: <A HREF="Prelude.html#t%3ARead" >Read</A > a => <A HREF="Prelude.html#t%3AString" >String</A > -> a</TD ></TR ><TR ><TD CLASS="doc" >The <TT ><A HREF="Prelude.html#v%3Aread" >read</A ></TT > function reads input from a string, which must be completely consumed by the input process. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:lex" ><A NAME="v%3Alex" ></A ></A ><B >lex</B > :: <A HREF="Prelude.html#t%3AReadS" >ReadS</A > <A HREF="Prelude.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="doc" ><P >The <TT ><A HREF="Prelude.html#v%3Alex" >lex</A ></TT > function reads a single lexeme from the input, discarding initial white space, and returning the characters that constitute the lexeme. If the input string contains only white space, <TT ><A HREF="Prelude.html#v%3Alex" >lex</A ></TT > returns a single successful `lexeme' consisting of the empty string. (Thus <TT ><TT ><A HREF="Prelude.html#v%3Alex" >lex</A ></TT > "" = [("","")]</TT >.) If there is no legal lexeme at the beginning of the input string, <TT ><A HREF="Prelude.html#v%3Alex" >lex</A ></TT > fails (i.e. returns <TT >[]</TT >). </P ><P >This lexer is not completely faithful to the Haskell lexical syntax in the following respects: </P ><UL ><LI > Qualified names are not handled properly </LI ><LI > Octal and hexadecimal numerics are not recognized as a single token </LI ><LI > Comments are not treated properly </LI ></UL ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="24" ><A NAME="24" >Basic Input and output </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:IO" ><A NAME="t%3AIO" ></A ></A ><B >IO</B > a </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >A value of type <TT ><TT ><A HREF="Prelude.html#t%3AIO" >IO</A ></TT > a</TT > is a computation which, when performed, does some I/O before returning a value of type <TT >a</TT >. </P ><P >There is really only one way to "perform" an I/O action: bind it to <TT >Main.main</TT > in your program. When your program is run, the I/O will be performed. It isn't possible to perform I/O from an arbitrary function, unless that function is itself in the <TT ><A HREF="Prelude.html#t%3AIO" >IO</A ></TT > monad and called at some point, directly or indirectly, from <TT >Main.main</TT >. </P ><P ><TT ><A HREF="Prelude.html#t%3AIO" >IO</A ></TT > is a monad, so <TT ><A HREF="Prelude.html#t%3AIO" >IO</A ></TT > actions can be combined using either the do-notation or the <TT ><A HREF="Prelude.html#v%3A%3E%3E" >>></A ></TT > and <TT ><A HREF="Prelude.html#v%3A%3E%3E%3D" >>>=</A ></TT > operations from the <TT ><A HREF="Prelude.html#t%3AMonad" >Monad</A ></TT > class. </P ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:IO')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:IO" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AMonad" >Monad</A > <A HREF="Prelude.html#t%3AIO" >IO</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Prelude.html#t%3AFunctor" >Functor</A > <A HREF="Prelude.html#t%3AIO" >IO</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable1" >Typeable1</A > <A HREF="Prelude.html#t%3AIO" >IO</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Control-Monad-Fix.html#t%3AMonadFix" >MonadFix</A > <A HREF="Prelude.html#t%3AIO" >IO</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Control-Applicative.html#t%3AApplicative" >Applicative</A > <A HREF="Prelude.html#t%3AIO" >IO</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Printf.html#t%3AHPrintfType" >HPrintfType</A > (<A HREF="Prelude.html#t%3AIO" >IO</A > a)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Printf.html#t%3APrintfType" >PrintfType</A > (<A HREF="Prelude.html#t%3AIO" >IO</A > a)</TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="25" ><A NAME="25" >Simple I/O operations </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section3" ><A NAME="26" ><A NAME="26" >Output functions </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:putChar" ><A NAME="v%3AputChar" ></A ></A ><B >putChar</B > :: <A HREF="../ghc-prim/GHC-Types.html#t%3AChar" >Char</A > -> <A HREF="Prelude.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="doc" >Write a character to the standard output device (same as <TT ><A HREF="System-IO.html#v%3AhPutChar" >hPutChar</A ></TT > <TT ><A HREF="System-IO.html#v%3Astdout" >stdout</A ></TT >). </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:putStr" ><A NAME="v%3AputStr" ></A ></A ><B >putStr</B > :: <A HREF="Prelude.html#t%3AString" >String</A > -> <A HREF="Prelude.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="doc" >Write a string to the standard output device (same as <TT ><A HREF="System-IO.html#v%3AhPutStr" >hPutStr</A ></TT > <TT ><A HREF="System-IO.html#v%3Astdout" >stdout</A ></TT >). </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:putStrLn" ><A NAME="v%3AputStrLn" ></A ></A ><B >putStrLn</B > :: <A HREF="Prelude.html#t%3AString" >String</A > -> <A HREF="Prelude.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="doc" >The same as <TT ><A HREF="Prelude.html#v%3AputStr" >putStr</A ></TT >, but adds a newline character. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:print" ><A NAME="v%3Aprint" ></A ></A ><B >print</B > :: <A HREF="Prelude.html#t%3AShow" >Show</A > a => a -> <A HREF="Prelude.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="doc" ><P >The <TT ><A HREF="Prelude.html#v%3Aprint" >print</A ></TT > function outputs a value of any printable type to the standard output device. Printable types are those that are instances of class <TT ><A HREF="Prelude.html#t%3AShow" >Show</A ></TT >; <TT ><A HREF="Prelude.html#v%3Aprint" >print</A ></TT > converts values to strings for output using the <TT ><A HREF="Prelude.html#v%3Ashow" >show</A ></TT > operation and adds a newline. </P ><P >For example, a program to print the first 20 integers and their powers of 2 could be written as: </P ><PRE > main = print ([(n, 2^n) | n <- [0..19]]) </PRE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section3" ><A NAME="27" ><A NAME="27" >Input functions </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:getChar" ><A NAME="v%3AgetChar" ></A ></A ><B >getChar</B > :: <A HREF="Prelude.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="doc" >Read a character from the standard input device (same as <TT ><A HREF="System-IO.html#v%3AhGetChar" >hGetChar</A ></TT > <TT ><A HREF="System-IO.html#v%3Astdin" >stdin</A ></TT >). </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:getLine" ><A NAME="v%3AgetLine" ></A ></A ><B >getLine</B > :: <A HREF="Prelude.html#t%3AIO" >IO</A > <A HREF="Prelude.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="doc" >Read a line from the standard input device (same as <TT ><A HREF="System-IO.html#v%3AhGetLine" >hGetLine</A ></TT > <TT ><A HREF="System-IO.html#v%3Astdin" >stdin</A ></TT >). </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:getContents" ><A NAME="v%3AgetContents" ></A ></A ><B >getContents</B > :: <A HREF="Prelude.html#t%3AIO" >IO</A > <A HREF="Prelude.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="doc" >The <TT ><A HREF="Prelude.html#v%3AgetContents" >getContents</A ></TT > operation returns all user input as a single string, which is read lazily as it is needed (same as <TT ><A HREF="System-IO.html#v%3AhGetContents" >hGetContents</A ></TT > <TT ><A HREF="System-IO.html#v%3Astdin" >stdin</A ></TT >). </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:interact" ><A NAME="v%3Ainteract" ></A ></A ><B >interact</B > :: (<A HREF="Prelude.html#t%3AString" >String</A > -> <A HREF="Prelude.html#t%3AString" >String</A >) -> <A HREF="Prelude.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="doc" >The <TT ><A HREF="Prelude.html#v%3Ainteract" >interact</A ></TT > function takes a function of type <TT >String->String</TT > as its argument. The entire input from the standard input device is passed to this function as its argument, and the resulting string is output on the standard output device. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section3" ><A NAME="28" ><A NAME="28" >Files </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:FilePath" ><A NAME="t%3AFilePath" ></A ></A ><B >FilePath</B > = <A HREF="Prelude.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="doc" >File and directory names are values of type <TT ><A HREF="Prelude.html#t%3AString" >String</A ></TT >, whose precise meaning is operating system dependent. Files can be opened, yielding a handle which can then be used to operate on the contents of that file. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:readFile" ><A NAME="v%3AreadFile" ></A ></A ><B >readFile</B > :: <A HREF="Prelude.html#t%3AFilePath" >FilePath</A > -> <A HREF="Prelude.html#t%3AIO" >IO</A > <A HREF="Prelude.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="doc" >The <TT ><A HREF="Prelude.html#v%3AreadFile" >readFile</A ></TT > function reads a file and returns the contents of the file as a string. The file is read lazily, on demand, as with <TT ><A HREF="Prelude.html#v%3AgetContents" >getContents</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:writeFile" ><A NAME="v%3AwriteFile" ></A ></A ><B >writeFile</B > :: <A HREF="Prelude.html#t%3AFilePath" >FilePath</A > -> <A HREF="Prelude.html#t%3AString" >String</A > -> <A HREF="Prelude.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="doc" >The computation <TT ><A HREF="Prelude.html#v%3AwriteFile" >writeFile</A ></TT > <TT >file str</TT > function writes the string <TT >str</TT >, to the file <TT >file</TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:appendFile" ><A NAME="v%3AappendFile" ></A ></A ><B >appendFile</B > :: <A HREF="Prelude.html#t%3AFilePath" >FilePath</A > -> <A HREF="Prelude.html#t%3AString" >String</A > -> <A HREF="Prelude.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="doc" ><P >The computation <TT ><A HREF="Prelude.html#v%3AappendFile" >appendFile</A ></TT > <TT >file str</TT > function appends the string <TT >str</TT >, to the file <TT >file</TT >. </P ><P >Note that <TT ><A HREF="Prelude.html#v%3AwriteFile" >writeFile</A ></TT > and <TT ><A HREF="Prelude.html#v%3AappendFile" >appendFile</A ></TT > write a literal string to a file. To write a value of any printable type, as with <TT ><A HREF="Prelude.html#v%3Aprint" >print</A ></TT >, use the <TT ><A HREF="Prelude.html#v%3Ashow" >show</A ></TT > function to convert the value to a string first. </P ><PRE > main = appendFile "squares" (show [(x,x*x) | x <- [0,0.1..2]]) </PRE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:readIO" ><A NAME="v%3AreadIO" ></A ></A ><B >readIO</B > :: <A HREF="Prelude.html#t%3ARead" >Read</A > a => <A HREF="Prelude.html#t%3AString" >String</A > -> <A HREF="Prelude.html#t%3AIO" >IO</A > a</TD ></TR ><TR ><TD CLASS="doc" >The <TT ><A HREF="Prelude.html#v%3AreadIO" >readIO</A ></TT > function is similar to <TT ><A HREF="Prelude.html#v%3Aread" >read</A ></TT > except that it signals parse failure to the <TT ><A HREF="Prelude.html#t%3AIO" >IO</A ></TT > monad instead of terminating the program. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:readLn" ><A NAME="v%3AreadLn" ></A ></A ><B >readLn</B > :: <A HREF="Prelude.html#t%3ARead" >Read</A > a => <A HREF="Prelude.html#t%3AIO" >IO</A > a</TD ></TR ><TR ><TD CLASS="doc" >The <TT ><A HREF="Prelude.html#v%3AreadLn" >readLn</A ></TT > function combines <TT ><A HREF="Prelude.html#v%3AgetLine" >getLine</A ></TT > and <TT ><A HREF="Prelude.html#v%3AreadIO" >readIO</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="29" ><A NAME="29" >Exception handling in the I/O monad </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:IOError" ><A NAME="t%3AIOError" ></A ></A ><B >IOError</B > = <A HREF="Control-Exception-Base.html#t%3AIOException" >IOException</A ></TD ></TR ><TR ><TD CLASS="doc" ><P >The Haskell 98 type for exceptions in the <TT ><A HREF="Prelude.html#t%3AIO" >IO</A ></TT > monad. Any I/O operation may raise an <TT ><A HREF="Prelude.html#t%3AIOError" >IOError</A ></TT > instead of returning a result. For a more general type of exception, including also those that arise in pure code, see Control.Exception.Exception. </P ><P >In Haskell 98, this is an opaque type. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:ioError" ><A NAME="v%3AioError" ></A ></A ><B >ioError</B > :: <A HREF="Prelude.html#t%3AIOError" >IOError</A > -> <A HREF="Prelude.html#t%3AIO" >IO</A > a</TD ></TR ><TR ><TD CLASS="doc" >Raise an <TT ><A HREF="Prelude.html#t%3AIOError" >IOError</A ></TT > in the <TT ><A HREF="Prelude.html#t%3AIO" >IO</A ></TT > monad. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:userError" ><A NAME="v%3AuserError" ></A ></A ><B >userError</B > :: <A HREF="Prelude.html#t%3AString" >String</A > -> <A HREF="Prelude.html#t%3AIOError" >IOError</A ></TD ></TR ><TR ><TD CLASS="doc" ><P >Construct an <TT ><A HREF="Prelude.html#t%3AIOError" >IOError</A ></TT > value with a string describing the error. The <TT ><A HREF="Prelude.html#v%3Afail" >fail</A ></TT > method of the <TT ><A HREF="Prelude.html#t%3AIO" >IO</A ></TT > instance of the <TT ><A HREF="Prelude.html#t%3AMonad" >Monad</A ></TT > class raises a <TT ><A HREF="Prelude.html#v%3AuserError" >userError</A ></TT >, thus: </P ><PRE > instance Monad IO where ... fail s = ioError (userError s) </PRE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:catch" ><A NAME="v%3Acatch" ></A ></A ><B >catch</B > :: <A HREF="Prelude.html#t%3AIO" >IO</A > a -> (<A HREF="Prelude.html#t%3AIOError" >IOError</A > -> <A HREF="Prelude.html#t%3AIO" >IO</A > a) -> <A HREF="Prelude.html#t%3AIO" >IO</A > a</TD ></TR ><TR ><TD CLASS="doc" ><P >The <TT ><A HREF="Prelude.html#v%3Acatch" >catch</A ></TT > function establishes a handler that receives any <TT ><A HREF="Prelude.html#t%3AIOError" >IOError</A ></TT > raised in the action protected by <TT ><A HREF="Prelude.html#v%3Acatch" >catch</A ></TT >. An <TT ><A HREF="Prelude.html#t%3AIOError" >IOError</A ></TT > is caught by the most recent handler established by <TT ><A HREF="Prelude.html#v%3Acatch" >catch</A ></TT >. These handlers are not selective: all <TT ><A HREF="Prelude.html#t%3AIOError" >IOError</A ></TT >s are caught. Exception propagation must be explicitly provided in a handler by re-raising any unwanted exceptions. For example, in </P ><PRE > f = catch g (\e -> if IO.isEOFError e then return [] else ioError e) </PRE ><P >the function <TT >f</TT > returns <TT >[]</TT > when an end-of-file exception (cf. System.IO.Error.isEOFError) occurs in <TT >g</TT >; otherwise, the exception is propagated to the next outer handler. </P ><P >When an exception propagates outside the main program, the Haskell system prints the associated <TT ><A HREF="Prelude.html#t%3AIOError" >IOError</A ></TT > value and exits the program. </P ><P >Non-I/O exceptions are not caught by this variant; to catch all exceptions, use Control.Exception.catch from <A HREF="Control-Exception.html" >Control.Exception</A >. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="botbar" >Produced by <A HREF="http://www.haskell.org/haddock/" >Haddock</A > version 2.4.2</TD ></TR ></TABLE ></BODY ></HTML >