<!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 >Data.Typeable</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_Data-Typeable.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" >Data.Typeable</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" >experimental</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" >The Typeable class </A ></DT ><DT ><A HREF="#2" >Type-safe cast </A ></DT ><DT ><A HREF="#3" >Type representations </A ></DT ><DT ><A HREF="#4" >Construction of type representations </A ></DT ><DT ><A HREF="#5" >Observation of type representations </A ></DT ><DT ><A HREF="#6" >The other Typeable classes </A ></DT ><DT ><A HREF="#7" >Default instances </A ></DT ></DL ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Description</TD ></TR ><TR ><TD CLASS="doc" >The <TT ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A ></TT > class reifies types to some extent by associating type representations to types. These type representations can be compared, and one can in turn define a type-safe cast operation. To this end, an unsafe cast is guarded by a test for type (representation) equivalence. The module <A HREF="Data-Dynamic.html" >Data.Dynamic</A > uses Typeable for an implementation of dynamics. The module <A HREF="Data-Generics.html" >Data.Generics</A > uses Typeable and type-safe cast (but not dynamics) to support the "Scrap your boilerplate" style of generic programming. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Synopsis</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A HREF="#t%3ATypeable" >Typeable</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%3AtypeOf" >typeOf</A > :: a -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Acast" >cast</A > :: (<A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > a, <A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > b) => a -> <A HREF="Data-Maybe.html#t%3AMaybe" >Maybe</A > b</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Agcast" >gcast</A > :: (<A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > a, <A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > b) => c a -> <A HREF="Data-Maybe.html#t%3AMaybe" >Maybe</A > (c b)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3ATypeRep" >TypeRep</A > </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3ATyCon" >TyCon</A > </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AshowsTypeRep" >showsTypeRep</A > :: <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A > -> <A HREF="Text-Show.html#t%3AShowS" >ShowS</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkTyCon" >mkTyCon</A > :: <A HREF="Data-Char.html#t%3AString" >String</A > -> <A HREF="Data-Typeable.html#t%3ATyCon" >TyCon</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkTyConApp" >mkTyConApp</A > :: <A HREF="Data-Typeable.html#t%3ATyCon" >TyCon</A > -> [<A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A >] -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkAppTy" >mkAppTy</A > :: <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A > -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A > -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkFunTy" >mkFunTy</A > :: <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A > -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A > -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsplitTyConApp" >splitTyConApp</A > :: <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A > -> (<A HREF="Data-Typeable.html#t%3ATyCon" >TyCon</A >, [<A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A >])</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AfunResultTy" >funResultTy</A > :: <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A > -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A > -> <A HREF="Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtypeRepTyCon" >typeRepTyCon</A > :: <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A > -> <A HREF="Data-Typeable.html#t%3ATyCon" >TyCon</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtypeRepArgs" >typeRepArgs</A > :: <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A > -> [<A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A >]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtyConString" >tyConString</A > :: <A HREF="Data-Typeable.html#t%3ATyCon" >TyCon</A > -> <A HREF="Data-Char.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtypeRepKey" >typeRepKey</A > :: <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A > -> <A HREF="System-IO.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A HREF="#t%3ATypeable1" >Typeable1</A > t <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%3AtypeOf1" >typeOf1</A > :: t a -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A HREF="#t%3ATypeable2" >Typeable2</A > t <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%3AtypeOf2" >typeOf2</A > :: t a b -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A HREF="#t%3ATypeable3" >Typeable3</A > t <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%3AtypeOf3" >typeOf3</A > :: t a b c -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A HREF="#t%3ATypeable4" >Typeable4</A > t <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%3AtypeOf4" >typeOf4</A > :: t a b c d -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A HREF="#t%3ATypeable5" >Typeable5</A > t <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%3AtypeOf5" >typeOf5</A > :: t a b c d e -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A HREF="#t%3ATypeable6" >Typeable6</A > t <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%3AtypeOf6" >typeOf6</A > :: t a b c d e f -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A HREF="#t%3ATypeable7" >Typeable7</A > t <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%3AtypeOf7" >typeOf7</A > :: t a b c d e f g -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Agcast1" >gcast1</A > :: (<A HREF="Data-Typeable.html#t%3ATypeable1" >Typeable1</A > t, <A HREF="Data-Typeable.html#t%3ATypeable1" >Typeable1</A > t') => c (t a) -> <A HREF="Data-Maybe.html#t%3AMaybe" >Maybe</A > (c (t' a))</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Agcast2" >gcast2</A > :: (<A HREF="Data-Typeable.html#t%3ATypeable2" >Typeable2</A > t, <A HREF="Data-Typeable.html#t%3ATypeable2" >Typeable2</A > t') => c (t a b) -> <A HREF="Data-Maybe.html#t%3AMaybe" >Maybe</A > (c (t' a b))</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtypeOfDefault" >typeOfDefault</A > :: (<A HREF="Data-Typeable.html#t%3ATypeable1" >Typeable1</A > t, <A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > a) => t a -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtypeOf1Default" >typeOf1Default</A > :: (<A HREF="Data-Typeable.html#t%3ATypeable2" >Typeable2</A > t, <A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > a) => t a b -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtypeOf2Default" >typeOf2Default</A > :: (<A HREF="Data-Typeable.html#t%3ATypeable3" >Typeable3</A > t, <A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > a) => t a b c -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtypeOf3Default" >typeOf3Default</A > :: (<A HREF="Data-Typeable.html#t%3ATypeable4" >Typeable4</A > t, <A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > a) => t a b c d -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtypeOf4Default" >typeOf4Default</A > :: (<A HREF="Data-Typeable.html#t%3ATypeable5" >Typeable5</A > t, <A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > a) => t a b c d e -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtypeOf5Default" >typeOf5Default</A > :: (<A HREF="Data-Typeable.html#t%3ATypeable6" >Typeable6</A > t, <A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > a) => t a b c d e f -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtypeOf6Default" >typeOf6Default</A > :: (<A HREF="Data-Typeable.html#t%3ATypeable7" >Typeable7</A > t, <A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > a) => t a b c d e f g -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</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" >The Typeable class </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A NAME="t:Typeable" ><A NAME="t%3ATypeable" ></A ></A ><B >Typeable</B > a <SPAN CLASS="keyword" >where</SPAN ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >The class <TT ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A ></TT > allows a concrete representation of a type to be calculated. </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:typeOf" ><A NAME="v%3AtypeOf" ></A ></A ><B >typeOf</B > :: a -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ><TR ><TD CLASS="doc" >Takes a value of type <TT >a</TT > and returns a concrete representation of that type. The <EM >value</EM > of the argument should be ignored by any instance of <TT ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A ></TT >, so that it is safe to pass <TT ><A HREF="Prelude.html#v%3Aundefined" >undefined</A ></TT > as the argument. </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:Typeable')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Typeable" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AChar" >Char</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="../ghc-prim/GHC-Types.html#t%3ADouble" >Double</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AFloat" >Float</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Data-Int.html#t%3AInt8" >Int8</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Data-Int.html#t%3AInt16" >Int16</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Data-Int.html#t%3AInt32" >Int32</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Data-Int.html#t%3AInt64" >Int64</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="../integer/GHC-Integer.html#t%3AInteger" >Integer</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="../ghc-prim/GHC-Ordering.html#t%3AOrdering" >Ordering</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="../ghc-prim/GHC-Prim.html#t%3ARealWorld" >RealWorld</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Data-Word.html#t%3AWord" >Word</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Data-Word.html#t%3AWord8" >Word8</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Data-Word.html#t%3AWord16" >Word16</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Data-Word.html#t%3AWord32" >Word32</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Data-Word.html#t%3AWord64" >Word64</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="../ghc-prim/GHC-Unit.html#t%3A%28%29" >()</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Data-Typeable.html#t%3ATyCon" >TyCon</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Control-Exception-Base.html#t%3AArithException" >ArithException</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Control-Exception-Base.html#t%3AErrorCall" >ErrorCall</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Control-Exception-Base.html#t%3ASomeException" >SomeException</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Foreign-C-Types.html#t%3ACUIntMax" >CUIntMax</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Foreign-C-Types.html#t%3ACIntMax" >CIntMax</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Foreign-C-Types.html#t%3ACUIntPtr" >CUIntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Foreign-C-Types.html#t%3ACIntPtr" >CIntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Foreign-C-Types.html#t%3ACTime" >CTime</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Foreign-C-Types.html#t%3ACClock" >CClock</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Foreign-C-Types.html#t%3ACSigAtomic" >CSigAtomic</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Foreign-C-Types.html#t%3ACWchar" >CWchar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Foreign-C-Types.html#t%3ACSize" >CSize</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Foreign-C-Types.html#t%3ACPtrdiff" >CPtrdiff</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Foreign-C-Types.html#t%3ACLDouble" >CLDouble</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Foreign-C-Types.html#t%3ACDouble" >CDouble</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Foreign-C-Types.html#t%3ACFloat" >CFloat</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Foreign-C-Types.html#t%3ACULLong" >CULLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Foreign-C-Types.html#t%3ACLLong" >CLLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Foreign-C-Types.html#t%3ACULong" >CULong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Foreign-C-Types.html#t%3ACLong" >CLong</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Foreign-C-Types.html#t%3ACUInt" >CUInt</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Foreign-C-Types.html#t%3ACInt" >CInt</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Foreign-C-Types.html#t%3ACUShort" >CUShort</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Foreign-C-Types.html#t%3ACShort" >CShort</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Foreign-C-Types.html#t%3ACUChar" >CUChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Foreign-C-Types.html#t%3ACSChar" >CSChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Foreign-C-Types.html#t%3ACChar" >CChar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Control-Exception-Base.html#t%3AIOException" >IOException</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="System-Exit.html#t%3AExitCode" >ExitCode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Control-Exception-Base.html#t%3AArrayException" >ArrayException</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Control-Exception-Base.html#t%3AAsyncException" >AsyncException</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Control-Exception-Base.html#t%3AAssertionFailed" >AssertionFailed</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Control-Exception-Base.html#t%3ADeadlock" >Deadlock</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Control-Exception-Base.html#t%3ABlockedIndefinitely" >BlockedIndefinitely</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Control-Exception-Base.html#t%3ABlockedOnDeadMVar" >BlockedOnDeadMVar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="System-IO.html#t%3AHandle" >Handle</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Data-Dynamic.html#t%3ADynamic" >Dynamic</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Foreign-Ptr.html#t%3AIntPtr" >IntPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Foreign-Ptr.html#t%3AWordPtr" >WordPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="System-Posix-Types.html#t%3AFd" >Fd</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="System-Posix-Types.html#t%3ACRLim" >CRLim</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="System-Posix-Types.html#t%3ACTcflag" >CTcflag</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="System-Posix-Types.html#t%3ACSpeed" >CSpeed</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="System-Posix-Types.html#t%3ACCc" >CCc</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="System-Posix-Types.html#t%3ACUid" >CUid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="System-Posix-Types.html#t%3ACNlink" >CNlink</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="System-Posix-Types.html#t%3ACGid" >CGid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="System-Posix-Types.html#t%3ACSsize" >CSsize</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="System-Posix-Types.html#t%3ACPid" >CPid</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="System-Posix-Types.html#t%3ACOff" >COff</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="System-Posix-Types.html#t%3ACMode" >CMode</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="System-Posix-Types.html#t%3ACIno" >CIno</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="System-Posix-Types.html#t%3ACDev" >CDev</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Control-Concurrent.html#t%3AThreadId" >ThreadId</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Control-Exception-Base.html#t%3ANestedAtomically" >NestedAtomically</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Control-Exception-Base.html#t%3ANonTermination" >NonTermination</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Control-Exception-Base.html#t%3ANoMethodError" >NoMethodError</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Control-Exception-Base.html#t%3ARecUpdError" >RecUpdError</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Control-Exception-Base.html#t%3ARecConError" >RecConError</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Control-Exception-Base.html#t%3ARecSelError" >RecSelError</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Control-Exception-Base.html#t%3APatternMatchFail" >PatternMatchFail</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Control-OldException.html#t%3AException" >Exception</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Control-Concurrent-QSem.html#t%3AQSem" >QSem</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Control-Concurrent-QSemN.html#t%3AQSemN" >QSemN</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > Timeout</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Data-Version.html#t%3AVersion" >Version</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="2" ><A NAME="2" >Type-safe cast </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:cast" ><A NAME="v%3Acast" ></A ></A ><B >cast</B > :: (<A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > a, <A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > b) => a -> <A HREF="Data-Maybe.html#t%3AMaybe" >Maybe</A > b</TD ></TR ><TR ><TD CLASS="doc" >The type-safe cast operation </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:gcast" ><A NAME="v%3Agcast" ></A ></A ><B >gcast</B > :: (<A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > a, <A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > b) => c a -> <A HREF="Data-Maybe.html#t%3AMaybe" >Maybe</A > (c b)</TD ></TR ><TR ><TD CLASS="doc" >A flexible variation parameterised in a type constructor </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="3" ><A NAME="3" >Type representations </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:TypeRep" ><A NAME="t%3ATypeRep" ></A ></A ><B >TypeRep</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >A concrete representation of a (monomorphic) type. <TT ><A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TT > supports reasonably efficient equality. </TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:TypeRep')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:TypeRep" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Data-Eq.html#t%3AEq" >Eq</A > <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Show.html#t%3AShow" >Show</A > <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:TyCon" ><A NAME="t%3ATyCon" ></A ></A ><B >TyCon</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >An abstract representation of a type constructor. <TT ><A HREF="Data-Typeable.html#t%3ATyCon" >TyCon</A ></TT > objects can be built using <TT ><A HREF="Data-Typeable.html#v%3AmkTyCon" >mkTyCon</A ></TT >. </TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:TyCon')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:TyCon" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Data-Eq.html#t%3AEq" >Eq</A > <A HREF="Data-Typeable.html#t%3ATyCon" >TyCon</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Text-Show.html#t%3AShow" >Show</A > <A HREF="Data-Typeable.html#t%3ATyCon" >TyCon</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > <A HREF="Data-Typeable.html#t%3ATyCon" >TyCon</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:showsTypeRep" ><A NAME="v%3AshowsTypeRep" ></A ></A ><B >showsTypeRep</B > :: <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A > -> <A HREF="Text-Show.html#t%3AShowS" >ShowS</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="4" ><A NAME="4" >Construction of type representations </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkTyCon" ><A NAME="v%3AmkTyCon" ></A ></A ><B >mkTyCon</B ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="arg" >:: <A HREF="Data-Char.html#t%3AString" >String</A ></TD ><TD CLASS="rdoc" >the name of the type constructor (should be unique in the program, so it might be wise to use the fully qualified name). </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="Data-Typeable.html#t%3ATyCon" >TyCon</A ></TD ><TD CLASS="rdoc" >A unique <TT ><A HREF="Data-Typeable.html#t%3ATyCon" >TyCon</A ></TT > object </TD ></TR ><TR ><TD CLASS="ndoc" COLSPAN="2" ><P >Builds a <TT ><A HREF="Data-Typeable.html#t%3ATyCon" >TyCon</A ></TT > object representing a type constructor. An implementation of <A HREF="Data-Typeable.html" >Data.Typeable</A > should ensure that the following holds: </P ><PRE > mkTyCon "a" == mkTyCon "a" </PRE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkTyConApp" ><A NAME="v%3AmkTyConApp" ></A ></A ><B >mkTyConApp</B > :: <A HREF="Data-Typeable.html#t%3ATyCon" >TyCon</A > -> [<A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A >] -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ><TR ><TD CLASS="doc" >Applies a type constructor to a sequence of types </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkAppTy" ><A NAME="v%3AmkAppTy" ></A ></A ><B >mkAppTy</B > :: <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A > -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A > -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ><TR ><TD CLASS="doc" >Adds a TypeRep argument to a TypeRep. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkFunTy" ><A NAME="v%3AmkFunTy" ></A ></A ><B >mkFunTy</B > :: <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A > -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A > -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ><TR ><TD CLASS="doc" >A special case of <TT ><A HREF="Data-Typeable.html#v%3AmkTyConApp" >mkTyConApp</A ></TT >, which applies the function type constructor to a pair of types. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="5" ><A NAME="5" >Observation of type representations </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:splitTyConApp" ><A NAME="v%3AsplitTyConApp" ></A ></A ><B >splitTyConApp</B > :: <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A > -> (<A HREF="Data-Typeable.html#t%3ATyCon" >TyCon</A >, [<A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A >])</TD ></TR ><TR ><TD CLASS="doc" >Splits a type constructor application </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:funResultTy" ><A NAME="v%3AfunResultTy" ></A ></A ><B >funResultTy</B > :: <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A > -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A > -> <A HREF="Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ><TR ><TD CLASS="doc" >Applies a type to a function type. Returns: <TT ><TT ><A HREF="Data-Maybe.html#v%3AJust" >Just</A ></TT > u</TT > if the first argument represents a function of type <TT >t -> u</TT > and the second argument represents a function of type <TT >t</TT >. Otherwise, returns <TT ><A HREF="Data-Maybe.html#v%3ANothing" >Nothing</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:typeRepTyCon" ><A NAME="v%3AtypeRepTyCon" ></A ></A ><B >typeRepTyCon</B > :: <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A > -> <A HREF="Data-Typeable.html#t%3ATyCon" >TyCon</A ></TD ></TR ><TR ><TD CLASS="doc" >Observe the type constructor of a type representation </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:typeRepArgs" ><A NAME="v%3AtypeRepArgs" ></A ></A ><B >typeRepArgs</B > :: <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A > -> [<A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A >]</TD ></TR ><TR ><TD CLASS="doc" >Observe the argument types of a type representation </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tyConString" ><A NAME="v%3AtyConString" ></A ></A ><B >tyConString</B > :: <A HREF="Data-Typeable.html#t%3ATyCon" >TyCon</A > -> <A HREF="Data-Char.html#t%3AString" >String</A ></TD ></TR ><TR ><TD CLASS="doc" >Observe string encoding of a type representation </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:typeRepKey" ><A NAME="v%3AtypeRepKey" ></A ></A ><B >typeRepKey</B > :: <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A > -> <A HREF="System-IO.html#t%3AIO" >IO</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="doc" ><P >Returns a unique integer associated with a <TT ><A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TT >. This can be used for making a mapping with TypeReps as the keys, for example. It is guaranteed that <TT >t1 == t2</TT > if and only if <TT >typeRepKey t1 == typeRepKey t2</TT >. </P ><P >It is in the <TT ><A HREF="System-IO.html#t%3AIO" >IO</A ></TT > monad because the actual value of the key may vary from run to run of the program. You should only rely on the equality property, not any actual key value. The relative ordering of keys has no meaning either. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="6" ><A NAME="6" >The other Typeable classes </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="doc" ><EM >Note:</EM > The general instances are provided for GHC only. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > <A NAME="t:Typeable1" ><A NAME="t%3ATypeable1" ></A ></A ><B >Typeable1</B > t <SPAN CLASS="keyword" >where</SPAN ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >Variant for unary type constructors </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:typeOf1" ><A NAME="v%3AtypeOf1" ></A ></A ><B >typeOf1</B > :: t a -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</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:Typeable1')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Typeable1" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable1" >Typeable1</A > []</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable1" >Typeable1</A > <A HREF="Data-Ratio.html#t%3ARatio" >Ratio</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable1" >Typeable1</A > <A HREF="Foreign-StablePtr.html#t%3AStablePtr" >StablePtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable1" >Typeable1</A > <A HREF="System-IO.html#t%3AIO" >IO</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable1" >Typeable1</A > <A HREF="Foreign-Ptr.html#t%3APtr" >Ptr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable1" >Typeable1</A > <A HREF="Foreign-Ptr.html#t%3AFunPtr" >FunPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable1" >Typeable1</A > <A HREF="Data-Maybe.html#t%3AMaybe" >Maybe</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable1" >Typeable1</A > <A HREF="Data-IORef.html#t%3AIORef" >IORef</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable1" >Typeable1</A > <A HREF="Control-Concurrent-MVar.html#t%3AMVar" >MVar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable1" >Typeable1</A > <A HREF="System-Mem-Weak.html#t%3AWeak" >Weak</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable1" >Typeable1</A > <A HREF="Foreign-ForeignPtr.html#t%3AForeignPtr" >ForeignPtr</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable1" >Typeable1</A > <A HREF="GHC-Conc.html#t%3ATVar" >TVar</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable1" >Typeable1</A > <A HREF="GHC-Conc.html#t%3ASTM" >STM</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable1" >Typeable1</A > <A HREF="Control-Concurrent-Chan.html#t%3AChan" >Chan</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable1" >Typeable1</A > <A HREF="Data-Complex.html#t%3AComplex" >Complex</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable1" >Typeable1</A > <A HREF="System-Mem-StableName.html#t%3AStableName" >StableName</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:Typeable2" ><A NAME="t%3ATypeable2" ></A ></A ><B >Typeable2</B > t <SPAN CLASS="keyword" >where</SPAN ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >Variant for binary type constructors </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:typeOf2" ><A NAME="v%3AtypeOf2" ></A ></A ><B >typeOf2</B > :: t a b -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</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:Typeable2')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Typeable2" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable2" >Typeable2</A > (->)</TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable2" >Typeable2</A > <A HREF="Data-Either.html#t%3AEither" >Either</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable2" >Typeable2</A > <A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%29" >(,)</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable2" >Typeable2</A > <A HREF="Control-Monad-ST.html#t%3AST" >ST</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable2" >Typeable2</A > <A HREF="GHC-Arr.html#t%3AArray" >Array</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable2" >Typeable2</A > <A HREF="Data-STRef.html#t%3ASTRef" >STRef</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable2" >Typeable2</A > IOArray</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:Typeable3" ><A NAME="t%3ATypeable3" ></A ></A ><B >Typeable3</B > t <SPAN CLASS="keyword" >where</SPAN ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >Variant for 3-ary type constructors </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:typeOf3" ><A NAME="v%3AtypeOf3" ></A ></A ><B >typeOf3</B > :: t a b c -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</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:Typeable3')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Typeable3" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable3" >Typeable3</A > <A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%29" >(,,)</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable3" >Typeable3</A > <A HREF="GHC-Arr.html#t%3ASTArray" >STArray</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:Typeable4" ><A NAME="t%3ATypeable4" ></A ></A ><B >Typeable4</B > t <SPAN CLASS="keyword" >where</SPAN ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >Variant for 4-ary type constructors </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:typeOf4" ><A NAME="v%3AtypeOf4" ></A ></A ><B >typeOf4</B > :: t a b c d -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</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:Typeable4')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Typeable4" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable4" >Typeable4</A > <A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%29" >(,,,)</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:Typeable5" ><A NAME="t%3ATypeable5" ></A ></A ><B >Typeable5</B > t <SPAN CLASS="keyword" >where</SPAN ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >Variant for 5-ary type constructors </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:typeOf5" ><A NAME="v%3AtypeOf5" ></A ></A ><B >typeOf5</B > :: t a b c d e -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</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:Typeable5')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Typeable5" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable5" >Typeable5</A > <A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%29" >(,,,,)</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:Typeable6" ><A NAME="t%3ATypeable6" ></A ></A ><B >Typeable6</B > t <SPAN CLASS="keyword" >where</SPAN ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >Variant for 6-ary type constructors </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:typeOf6" ><A NAME="v%3AtypeOf6" ></A ></A ><B >typeOf6</B > :: t a b c d e f -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</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:Typeable6')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Typeable6" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable6" >Typeable6</A > <A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%29" >(,,,,,)</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:Typeable7" ><A NAME="t%3ATypeable7" ></A ></A ><B >Typeable7</B > t <SPAN CLASS="keyword" >where</SPAN ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >Variant for 7-ary type constructors </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:typeOf7" ><A NAME="v%3AtypeOf7" ></A ></A ><B >typeOf7</B > :: t a b c d e f g -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</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:Typeable7')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Typeable7" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Data-Typeable.html#t%3ATypeable7" >Typeable7</A > <A HREF="../ghc-prim/GHC-Tuple.html#t%3A%28%2C%2C%2C%2C%2C%2C%29" >(,,,,,,)</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:gcast1" ><A NAME="v%3Agcast1" ></A ></A ><B >gcast1</B > :: (<A HREF="Data-Typeable.html#t%3ATypeable1" >Typeable1</A > t, <A HREF="Data-Typeable.html#t%3ATypeable1" >Typeable1</A > t') => c (t a) -> <A HREF="Data-Maybe.html#t%3AMaybe" >Maybe</A > (c (t' a))</TD ></TR ><TR ><TD CLASS="doc" >Cast for * -> * </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:gcast2" ><A NAME="v%3Agcast2" ></A ></A ><B >gcast2</B > :: (<A HREF="Data-Typeable.html#t%3ATypeable2" >Typeable2</A > t, <A HREF="Data-Typeable.html#t%3ATypeable2" >Typeable2</A > t') => c (t a b) -> <A HREF="Data-Maybe.html#t%3AMaybe" >Maybe</A > (c (t' a b))</TD ></TR ><TR ><TD CLASS="doc" >Cast for * -> * -> * </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="7" ><A NAME="7" >Default instances </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="doc" ><EM >Note:</EM > These are not needed by GHC, for which these instances are generated by general instance declarations. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:typeOfDefault" ><A NAME="v%3AtypeOfDefault" ></A ></A ><B >typeOfDefault</B > :: (<A HREF="Data-Typeable.html#t%3ATypeable1" >Typeable1</A > t, <A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > a) => t a -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ><TR ><TD CLASS="doc" >For defining a <TT ><A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A ></TT > instance from any <TT ><A HREF="Data-Typeable.html#t%3ATypeable1" >Typeable1</A ></TT > instance. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:typeOf1Default" ><A NAME="v%3AtypeOf1Default" ></A ></A ><B >typeOf1Default</B > :: (<A HREF="Data-Typeable.html#t%3ATypeable2" >Typeable2</A > t, <A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > a) => t a b -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ><TR ><TD CLASS="doc" >For defining a <TT ><A HREF="Data-Typeable.html#t%3ATypeable1" >Typeable1</A ></TT > instance from any <TT ><A HREF="Data-Typeable.html#t%3ATypeable2" >Typeable2</A ></TT > instance. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:typeOf2Default" ><A NAME="v%3AtypeOf2Default" ></A ></A ><B >typeOf2Default</B > :: (<A HREF="Data-Typeable.html#t%3ATypeable3" >Typeable3</A > t, <A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > a) => t a b c -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ><TR ><TD CLASS="doc" >For defining a <TT ><A HREF="Data-Typeable.html#t%3ATypeable2" >Typeable2</A ></TT > instance from any <TT ><A HREF="Data-Typeable.html#t%3ATypeable3" >Typeable3</A ></TT > instance. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:typeOf3Default" ><A NAME="v%3AtypeOf3Default" ></A ></A ><B >typeOf3Default</B > :: (<A HREF="Data-Typeable.html#t%3ATypeable4" >Typeable4</A > t, <A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > a) => t a b c d -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ><TR ><TD CLASS="doc" >For defining a <TT ><A HREF="Data-Typeable.html#t%3ATypeable3" >Typeable3</A ></TT > instance from any <TT ><A HREF="Data-Typeable.html#t%3ATypeable4" >Typeable4</A ></TT > instance. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:typeOf4Default" ><A NAME="v%3AtypeOf4Default" ></A ></A ><B >typeOf4Default</B > :: (<A HREF="Data-Typeable.html#t%3ATypeable5" >Typeable5</A > t, <A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > a) => t a b c d e -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ><TR ><TD CLASS="doc" >For defining a <TT ><A HREF="Data-Typeable.html#t%3ATypeable4" >Typeable4</A ></TT > instance from any <TT ><A HREF="Data-Typeable.html#t%3ATypeable5" >Typeable5</A ></TT > instance. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:typeOf5Default" ><A NAME="v%3AtypeOf5Default" ></A ></A ><B >typeOf5Default</B > :: (<A HREF="Data-Typeable.html#t%3ATypeable6" >Typeable6</A > t, <A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > a) => t a b c d e f -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ><TR ><TD CLASS="doc" >For defining a <TT ><A HREF="Data-Typeable.html#t%3ATypeable5" >Typeable5</A ></TT > instance from any <TT ><A HREF="Data-Typeable.html#t%3ATypeable6" >Typeable6</A ></TT > instance. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:typeOf6Default" ><A NAME="v%3AtypeOf6Default" ></A ></A ><B >typeOf6Default</B > :: (<A HREF="Data-Typeable.html#t%3ATypeable7" >Typeable7</A > t, <A HREF="Data-Typeable.html#t%3ATypeable" >Typeable</A > a) => t a b c d e f g -> <A HREF="Data-Typeable.html#t%3ATypeRep" >TypeRep</A ></TD ></TR ><TR ><TD CLASS="doc" >For defining a <TT ><A HREF="Data-Typeable.html#t%3ATypeable6" >Typeable6</A ></TT > instance from any <TT ><A HREF="Data-Typeable.html#t%3ATypeable7" >Typeable7</A ></TT > instance. </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 >