Sophie

Sophie

distrib > Fedora > 14 > x86_64 > media > updates > by-pkgid > ffaf49d6b064ac8faa69599a1460fac7 > files > 22

ghc-syb-devel-0.1.0.2-8.6.fc14.x86_64.rpm

<!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.Generics.Aliases</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-Generics-Aliases.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"
>syb-0.1.0.2: Scrap Your Boilerplate</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.Generics.Aliases</FONT
></TD
><TD ALIGN="right"
><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="infohead"
>Portability</TD
><TD CLASS="infoval"
>non-portable (local universal quantification)</TD
></TR
><TR
><TD CLASS="infohead"
>Stability</TD
><TD CLASS="infoval"
>experimental</TD
></TR
><TR
><TD CLASS="infohead"
>Maintainer</TD
><TD CLASS="infoval"
>generics@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"
>Combinators to &quot;make&quot; generic functions via cast
</A
></DT
><DT
><A HREF="#2"
>Type synonyms for generic function types
</A
></DT
><DT
><A HREF="#3"
>Inredients of generic functions
</A
></DT
><DT
><A HREF="#4"
>Function combinators on generic functions
</A
></DT
><DT
><A HREF="#5"
>Type extension for unary type constructors
</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"
>&quot;Scrap your boilerplate&quot; --- Generic programming in Haskell 
 See <A HREF="http://www.cs.vu.nl/boilerplate/"
>http://www.cs.vu.nl/boilerplate/</A
>. The present module provides
 a number of declarations for typical generic function types,
 corresponding type case, and others.
</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="#v%3AmkT"
>mkT</A
> :: (<A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> a, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> b) =&gt; (b -&gt; b) -&gt; a -&gt; a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkQ"
>mkQ</A
> :: (<A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> a, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> b) =&gt; r -&gt; (b -&gt; r) -&gt; a -&gt; r</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkM"
>mkM</A
> :: (<A HREF="../base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> a, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> b) =&gt; (b -&gt; m b) -&gt; a -&gt; m a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkMp"
>mkMp</A
> :: (<A HREF="../base-4.2.0.2/Control-Monad.html#t%3AMonadPlus"
>MonadPlus</A
> m, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> a, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> b) =&gt; (b -&gt; m b) -&gt; a -&gt; m a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkR"
>mkR</A
> :: (<A HREF="../base-4.2.0.2/Control-Monad.html#t%3AMonadPlus"
>MonadPlus</A
> m, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> a, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> b) =&gt; m b -&gt; m a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Aext0"
>ext0</A
> :: (<A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> a, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> b) =&gt; c a -&gt; c b -&gt; c a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AextT"
>extT</A
> :: (<A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> a, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> b) =&gt; (a -&gt; a) -&gt; (b -&gt; b) -&gt; a -&gt; a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AextQ"
>extQ</A
> :: (<A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> a, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> b) =&gt; (a -&gt; q) -&gt; (b -&gt; q) -&gt; a -&gt; q</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AextM"
>extM</A
> :: (<A HREF="../base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> a, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> b) =&gt; (a -&gt; m a) -&gt; (b -&gt; m b) -&gt; a -&gt; m a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AextMp"
>extMp</A
> :: (<A HREF="../base-4.2.0.2/Control-Monad.html#t%3AMonadPlus"
>MonadPlus</A
> m, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> a, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> b) =&gt; (a -&gt; m a) -&gt; (b -&gt; m b) -&gt; a -&gt; m a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AextB"
>extB</A
> :: (<A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> a, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> b) =&gt; a -&gt; b -&gt; a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AextR"
>extR</A
> :: (<A HREF="../base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> a, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> b) =&gt; m a -&gt; m b -&gt; m a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3AGenericT"
>GenericT</A
> = <SPAN CLASS="keyword"
>forall</SPAN
> a. <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> a =&gt; a -&gt; a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3AGenericQ"
>GenericQ</A
> r = <SPAN CLASS="keyword"
>forall</SPAN
> a. <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> a =&gt; a -&gt; r</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3AGenericM"
>GenericM</A
> m = <SPAN CLASS="keyword"
>forall</SPAN
> a. <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> a =&gt; a -&gt; m a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3AGenericB"
>GenericB</A
> = <SPAN CLASS="keyword"
>forall</SPAN
> a. <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> a =&gt; a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3AGenericR"
>GenericR</A
> m = <SPAN CLASS="keyword"
>forall</SPAN
> a. <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> a =&gt; m a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3AGeneric"
>Generic</A
> c = <SPAN CLASS="keyword"
>forall</SPAN
> a. <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> a =&gt; a -&gt; c a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3AGeneric%27"
>Generic'</A
> c = <A HREF="#v%3AGeneric%27"
>Generic'</A
> {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="recfield"
><A HREF="#v%3AunGeneric%27"
>unGeneric'</A
> :: <A HREF="Data-Generics-Aliases.html#t%3AGeneric"
>Generic</A
> c</TD
></TR
></TABLE
>}</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>newtype</SPAN
>  <A HREF="#t%3AGenericT%27"
>GenericT'</A
>  = <A HREF="#v%3AGT"
>GT</A
> {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="recfield"
><A HREF="#v%3AunGT"
>unGT</A
> :: <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> a =&gt; a -&gt; a</TD
></TR
></TABLE
>}</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>newtype</SPAN
>  <A HREF="#t%3AGenericQ%27"
>GenericQ'</A
> r = <A HREF="#v%3AGQ"
>GQ</A
> {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="recfield"
><A HREF="#v%3AunGQ"
>unGQ</A
> :: <A HREF="Data-Generics-Aliases.html#t%3AGenericQ"
>GenericQ</A
> r</TD
></TR
></TABLE
>}</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>newtype</SPAN
>  <A HREF="#t%3AGenericM%27"
>GenericM'</A
> m = <A HREF="#v%3AGM"
>GM</A
> {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="recfield"
><A HREF="#v%3AunGM"
>unGM</A
> :: <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> a =&gt; a -&gt; m a</TD
></TR
></TABLE
>}</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AorElse"
>orElse</A
> ::  <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> a -&gt; <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> a -&gt; <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3ArecoverMp"
>recoverMp</A
> :: <A HREF="../base-4.2.0.2/Control-Monad.html#t%3AMonadPlus"
>MonadPlus</A
> m =&gt; <A HREF="Data-Generics-Aliases.html#t%3AGenericM"
>GenericM</A
> m -&gt; <A HREF="Data-Generics-Aliases.html#t%3AGenericM"
>GenericM</A
> m</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3ArecoverQ"
>recoverQ</A
> :: <A HREF="../base-4.2.0.2/Control-Monad.html#t%3AMonadPlus"
>MonadPlus</A
> m =&gt; r -&gt; <A HREF="Data-Generics-Aliases.html#t%3AGenericQ"
>GenericQ</A
> (m r) -&gt; <A HREF="Data-Generics-Aliases.html#t%3AGenericQ"
>GenericQ</A
> (m r)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AchoiceMp"
>choiceMp</A
> :: <A HREF="../base-4.2.0.2/Control-Monad.html#t%3AMonadPlus"
>MonadPlus</A
> m =&gt; <A HREF="Data-Generics-Aliases.html#t%3AGenericM"
>GenericM</A
> m -&gt; <A HREF="Data-Generics-Aliases.html#t%3AGenericM"
>GenericM</A
> m -&gt; <A HREF="Data-Generics-Aliases.html#t%3AGenericM"
>GenericM</A
> m</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AchoiceQ"
>choiceQ</A
> :: <A HREF="../base-4.2.0.2/Control-Monad.html#t%3AMonadPlus"
>MonadPlus</A
> m =&gt; <A HREF="Data-Generics-Aliases.html#t%3AGenericQ"
>GenericQ</A
> (m r) -&gt; <A HREF="Data-Generics-Aliases.html#t%3AGenericQ"
>GenericQ</A
> (m r) -&gt; <A HREF="Data-Generics-Aliases.html#t%3AGenericQ"
>GenericQ</A
> (m r)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Aext1T"
>ext1T</A
> :: (<A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> d, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable1"
>Typeable1</A
> t) =&gt; (<SPAN CLASS="keyword"
>forall</SPAN
> e. <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> e =&gt; e -&gt; e) -&gt; (<SPAN CLASS="keyword"
>forall</SPAN
> f. <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> f =&gt; t f -&gt; t f) -&gt; d -&gt; d</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Aext1M"
>ext1M</A
> :: (<A HREF="../base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m, <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> d, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable1"
>Typeable1</A
> t) =&gt; (<SPAN CLASS="keyword"
>forall</SPAN
> e. <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> e =&gt; e -&gt; m e) -&gt; (<SPAN CLASS="keyword"
>forall</SPAN
> f. <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> f =&gt; t f -&gt; m (t f)) -&gt; d -&gt; m d</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Aext1Q"
>ext1Q</A
> :: (<A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> d, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable1"
>Typeable1</A
> t) =&gt; (d -&gt; q) -&gt; (<SPAN CLASS="keyword"
>forall</SPAN
> e. <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> e =&gt; t e -&gt; q) -&gt; d -&gt; q</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Aext1R"
>ext1R</A
> :: (<A HREF="../base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m, <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> d, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable1"
>Typeable1</A
> t) =&gt; m d -&gt; (<SPAN CLASS="keyword"
>forall</SPAN
> e. <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> e =&gt; m (t e)) -&gt; m d</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"
>Combinators to &quot;make&quot; generic functions via cast
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkT"
><A NAME="v%3AmkT"
></A
></A
><B
>mkT</B
> :: (<A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> a, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> b) =&gt; (b -&gt; b) -&gt; a -&gt; a</TD
></TR
><TR
><TD CLASS="doc"
>Make a generic transformation;
   start from a type-specific case;
   preserve the term otherwise
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkQ"
><A NAME="v%3AmkQ"
></A
></A
><B
>mkQ</B
> :: (<A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> a, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> b) =&gt; r -&gt; (b -&gt; r) -&gt; a -&gt; r</TD
></TR
><TR
><TD CLASS="doc"
>Make a generic query;
   start from a type-specific case;
   return a constant otherwise
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkM"
><A NAME="v%3AmkM"
></A
></A
><B
>mkM</B
> :: (<A HREF="../base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> a, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> b) =&gt; (b -&gt; m b) -&gt; a -&gt; m a</TD
></TR
><TR
><TD CLASS="doc"
>Make a generic monadic transformation;
   start from a type-specific case;
   resort to return otherwise
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkMp"
><A NAME="v%3AmkMp"
></A
></A
><B
>mkMp</B
> :: (<A HREF="../base-4.2.0.2/Control-Monad.html#t%3AMonadPlus"
>MonadPlus</A
> m, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> a, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> b) =&gt; (b -&gt; m b) -&gt; a -&gt; m a</TD
></TR
><TR
><TD CLASS="doc"
>Make a generic monadic transformation for MonadPlus;
   use &quot;const mzero&quot; (i.e., failure) instead of return as default.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkR"
><A NAME="v%3AmkR"
></A
></A
><B
>mkR</B
> :: (<A HREF="../base-4.2.0.2/Control-Monad.html#t%3AMonadPlus"
>MonadPlus</A
> m, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> a, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> b) =&gt; m b -&gt; m a</TD
></TR
><TR
><TD CLASS="doc"
>Make a generic builder;
   start from a type-specific ase;
   resort to no build (i.e., mzero) otherwise
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:ext0"
><A NAME="v%3Aext0"
></A
></A
><B
>ext0</B
> :: (<A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> a, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> b) =&gt; c a -&gt; c b -&gt; c a</TD
></TR
><TR
><TD CLASS="doc"
>Flexible type extension
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:extT"
><A NAME="v%3AextT"
></A
></A
><B
>extT</B
> :: (<A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> a, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> b) =&gt; (a -&gt; a) -&gt; (b -&gt; b) -&gt; a -&gt; a</TD
></TR
><TR
><TD CLASS="doc"
>Extend a generic transformation by a type-specific case
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:extQ"
><A NAME="v%3AextQ"
></A
></A
><B
>extQ</B
> :: (<A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> a, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> b) =&gt; (a -&gt; q) -&gt; (b -&gt; q) -&gt; a -&gt; q</TD
></TR
><TR
><TD CLASS="doc"
>Extend a generic query by a type-specific case
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:extM"
><A NAME="v%3AextM"
></A
></A
><B
>extM</B
> :: (<A HREF="../base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> a, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> b) =&gt; (a -&gt; m a) -&gt; (b -&gt; m b) -&gt; a -&gt; m a</TD
></TR
><TR
><TD CLASS="doc"
>Extend a generic monadic transformation by a type-specific case
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:extMp"
><A NAME="v%3AextMp"
></A
></A
><B
>extMp</B
> :: (<A HREF="../base-4.2.0.2/Control-Monad.html#t%3AMonadPlus"
>MonadPlus</A
> m, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> a, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> b) =&gt; (a -&gt; m a) -&gt; (b -&gt; m b) -&gt; a -&gt; m a</TD
></TR
><TR
><TD CLASS="doc"
>Extend a generic MonadPlus transformation by a type-specific case
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:extB"
><A NAME="v%3AextB"
></A
></A
><B
>extB</B
> :: (<A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> a, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> b) =&gt; a -&gt; b -&gt; a</TD
></TR
><TR
><TD CLASS="doc"
>Extend a generic builder
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:extR"
><A NAME="v%3AextR"
></A
></A
><B
>extR</B
> :: (<A HREF="../base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> a, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable"
>Typeable</A
> b) =&gt; m a -&gt; m b -&gt; m a</TD
></TR
><TR
><TD CLASS="doc"
>Extend a generic reader
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="2"
><A NAME="2"
>Type synonyms for generic function types
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:GenericT"
><A NAME="t%3AGenericT"
></A
></A
><B
>GenericT</B
> = <SPAN CLASS="keyword"
>forall</SPAN
> a. <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> a =&gt; a -&gt; a</TD
></TR
><TR
><TD CLASS="doc"
>Generic transformations,
   i.e., take an &quot;a&quot; and return an &quot;a&quot;
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:GenericQ"
><A NAME="t%3AGenericQ"
></A
></A
><B
>GenericQ</B
> r = <SPAN CLASS="keyword"
>forall</SPAN
> a. <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> a =&gt; a -&gt; r</TD
></TR
><TR
><TD CLASS="doc"
>Generic queries of type &quot;r&quot;,
   i.e., take any &quot;a&quot; and return an &quot;r&quot;
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:GenericM"
><A NAME="t%3AGenericM"
></A
></A
><B
>GenericM</B
> m = <SPAN CLASS="keyword"
>forall</SPAN
> a. <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> a =&gt; a -&gt; m a</TD
></TR
><TR
><TD CLASS="doc"
>Generic monadic transformations,
   i.e., take an &quot;a&quot; and compute an &quot;a&quot;
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:GenericB"
><A NAME="t%3AGenericB"
></A
></A
><B
>GenericB</B
> = <SPAN CLASS="keyword"
>forall</SPAN
> a. <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> a =&gt; a</TD
></TR
><TR
><TD CLASS="doc"
>Generic builders
   i.e., produce an &quot;a&quot;.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:GenericR"
><A NAME="t%3AGenericR"
></A
></A
><B
>GenericR</B
> m = <SPAN CLASS="keyword"
>forall</SPAN
> a. <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> a =&gt; m a</TD
></TR
><TR
><TD CLASS="doc"
>Generic readers, say monadic builders,
   i.e., produce an &quot;a&quot; with the help of a monad &quot;m&quot;.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:Generic"
><A NAME="t%3AGeneric"
></A
></A
><B
>Generic</B
> c = <SPAN CLASS="keyword"
>forall</SPAN
> a. <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> a =&gt; a -&gt; c a</TD
></TR
><TR
><TD CLASS="doc"
>The general scheme underlying generic functions
   assumed by gfoldl; there are isomorphisms such as
   GenericT = Generic T.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:Generic'"
><A NAME="t%3AGeneric%27"
></A
></A
><B
>Generic'</B
> c </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
>Wrapped generic functions;
   recall: [Generic c] would be legal but [Generic' c] not.
</TD
></TR
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:Generic'"
><A NAME="v%3AGeneric%27"
></A
></A
><B
>Generic'</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="body" COLSPAN="2"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:unGeneric'"
><A NAME="v%3AunGeneric%27"
></A
></A
><B
>unGeneric'</B
> :: <A HREF="Data-Generics-Aliases.html#t%3AGeneric"
>Generic</A
> c</TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>newtype</SPAN
>  <A NAME="t:GenericT'"
><A NAME="t%3AGenericT%27"
></A
></A
><B
>GenericT'</B
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
>Other first-class polymorphic wrappers
</TD
></TR
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:GT"
><A NAME="v%3AGT"
></A
></A
><B
>GT</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="body" COLSPAN="2"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:unGT"
><A NAME="v%3AunGT"
></A
></A
><B
>unGT</B
> :: <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> a =&gt; a -&gt; a</TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>newtype</SPAN
>  <A NAME="t:GenericQ'"
><A NAME="t%3AGenericQ%27"
></A
></A
><B
>GenericQ'</B
> r </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:GQ"
><A NAME="v%3AGQ"
></A
></A
><B
>GQ</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="body" COLSPAN="2"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:unGQ"
><A NAME="v%3AunGQ"
></A
></A
><B
>unGQ</B
> :: <A HREF="Data-Generics-Aliases.html#t%3AGenericQ"
>GenericQ</A
> r</TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>newtype</SPAN
>  <A NAME="t:GenericM'"
><A NAME="t%3AGenericM%27"
></A
></A
><B
>GenericM'</B
> m </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:GM"
><A NAME="v%3AGM"
></A
></A
><B
>GM</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="body" COLSPAN="2"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:unGM"
><A NAME="v%3AunGM"
></A
></A
><B
>unGM</B
> :: <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> a =&gt; a -&gt; m a</TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="3"
><A NAME="3"
>Inredients of generic functions
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:orElse"
><A NAME="v%3AorElse"
></A
></A
><B
>orElse</B
> ::  <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> a -&gt; <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> a -&gt; <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> a</TD
></TR
><TR
><TD CLASS="doc"
>Left-biased choice on maybies
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="4"
><A NAME="4"
>Function combinators on generic functions
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:recoverMp"
><A NAME="v%3ArecoverMp"
></A
></A
><B
>recoverMp</B
> :: <A HREF="../base-4.2.0.2/Control-Monad.html#t%3AMonadPlus"
>MonadPlus</A
> m =&gt; <A HREF="Data-Generics-Aliases.html#t%3AGenericM"
>GenericM</A
> m -&gt; <A HREF="Data-Generics-Aliases.html#t%3AGenericM"
>GenericM</A
> m</TD
></TR
><TR
><TD CLASS="doc"
>Recover from the failure of monadic transformation by identity
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:recoverQ"
><A NAME="v%3ArecoverQ"
></A
></A
><B
>recoverQ</B
> :: <A HREF="../base-4.2.0.2/Control-Monad.html#t%3AMonadPlus"
>MonadPlus</A
> m =&gt; r -&gt; <A HREF="Data-Generics-Aliases.html#t%3AGenericQ"
>GenericQ</A
> (m r) -&gt; <A HREF="Data-Generics-Aliases.html#t%3AGenericQ"
>GenericQ</A
> (m r)</TD
></TR
><TR
><TD CLASS="doc"
>Recover from the failure of monadic query by a constant
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:choiceMp"
><A NAME="v%3AchoiceMp"
></A
></A
><B
>choiceMp</B
> :: <A HREF="../base-4.2.0.2/Control-Monad.html#t%3AMonadPlus"
>MonadPlus</A
> m =&gt; <A HREF="Data-Generics-Aliases.html#t%3AGenericM"
>GenericM</A
> m -&gt; <A HREF="Data-Generics-Aliases.html#t%3AGenericM"
>GenericM</A
> m -&gt; <A HREF="Data-Generics-Aliases.html#t%3AGenericM"
>GenericM</A
> m</TD
></TR
><TR
><TD CLASS="doc"
>Choice for monadic transformations
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:choiceQ"
><A NAME="v%3AchoiceQ"
></A
></A
><B
>choiceQ</B
> :: <A HREF="../base-4.2.0.2/Control-Monad.html#t%3AMonadPlus"
>MonadPlus</A
> m =&gt; <A HREF="Data-Generics-Aliases.html#t%3AGenericQ"
>GenericQ</A
> (m r) -&gt; <A HREF="Data-Generics-Aliases.html#t%3AGenericQ"
>GenericQ</A
> (m r) -&gt; <A HREF="Data-Generics-Aliases.html#t%3AGenericQ"
>GenericQ</A
> (m r)</TD
></TR
><TR
><TD CLASS="doc"
>Choice for monadic queries
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="5"
><A NAME="5"
>Type extension for unary type constructors
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:ext1T"
><A NAME="v%3Aext1T"
></A
></A
><B
>ext1T</B
> :: (<A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> d, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable1"
>Typeable1</A
> t) =&gt; (<SPAN CLASS="keyword"
>forall</SPAN
> e. <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> e =&gt; e -&gt; e) -&gt; (<SPAN CLASS="keyword"
>forall</SPAN
> f. <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> f =&gt; t f -&gt; t f) -&gt; d -&gt; d</TD
></TR
><TR
><TD CLASS="doc"
>Type extension of transformations for unary type constructors
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:ext1M"
><A NAME="v%3Aext1M"
></A
></A
><B
>ext1M</B
> :: (<A HREF="../base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m, <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> d, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable1"
>Typeable1</A
> t) =&gt; (<SPAN CLASS="keyword"
>forall</SPAN
> e. <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> e =&gt; e -&gt; m e) -&gt; (<SPAN CLASS="keyword"
>forall</SPAN
> f. <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> f =&gt; t f -&gt; m (t f)) -&gt; d -&gt; m d</TD
></TR
><TR
><TD CLASS="doc"
>Type extension of monadic transformations for type constructors
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:ext1Q"
><A NAME="v%3Aext1Q"
></A
></A
><B
>ext1Q</B
> :: (<A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> d, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable1"
>Typeable1</A
> t) =&gt; (d -&gt; q) -&gt; (<SPAN CLASS="keyword"
>forall</SPAN
> e. <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> e =&gt; t e -&gt; q) -&gt; d -&gt; q</TD
></TR
><TR
><TD CLASS="doc"
>Type extension of queries for type constructors
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:ext1R"
><A NAME="v%3Aext1R"
></A
></A
><B
>ext1R</B
> :: (<A HREF="../base-4.2.0.2/Control-Monad.html#t%3AMonad"
>Monad</A
> m, <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> d, <A HREF="../base-4.2.0.2/Data-Typeable.html#t%3ATypeable1"
>Typeable1</A
> t) =&gt; m d -&gt; (<SPAN CLASS="keyword"
>forall</SPAN
> e. <A HREF="../base-4.2.0.2/Data-Data.html#t%3AData"
>Data</A
> e =&gt; m (t e)) -&gt; m d</TD
></TR
><TR
><TD CLASS="doc"
>Type extension of readers for type constructors
</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.6.1</TD
></TR
></TABLE
></BODY
></HTML
>