This file is indexed.

/usr/share/doc/libghc-syb-doc/html/Data-Generics-Aliases.html is in libghc-syb-doc 0.6-3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Data.Generics.Aliases</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script src="file:///usr/share/javascript/mathjax/MathJax.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_Data-Generics-Aliases.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Data-Generics-Aliases.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">syb-0.6: Scrap Your Boilerplate</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Copyright</th><td>(c) The University of Glasgow, CWI 2001--2004</td></tr><tr><th>License</th><td>BSD-style (see the LICENSE file)</td></tr><tr><th>Maintainer</th><td>generics@haskell.org</td></tr><tr><th>Stability</th><td>experimental</td></tr><tr><th>Portability</th><td>non-portable (local universal quantification)</td></tr><tr><th>Safe Haskell</th><td>Safe</td></tr><tr><th>Language</th><td>Haskell98</td></tr></table><p class="caption">Data.Generics.Aliases</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Combinators to &quot;make&quot; generic functions via cast</a></li><li><a href="#g:2">Type synonyms for generic function types</a></li><li><a href="#g:3">Ingredients of generic functions</a></li><li><a href="#g:4">Function combinators on generic functions</a></li><li><a href="#g:5">Type extension for unary type constructors</a></li><li><a href="#g:6">Type extension for binary type constructors</a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>&quot;Scrap your boilerplate&quot; --- Generic programming in Haskell 
 See <a href="http://www.cs.uu.nl/wiki/GenericProgramming/SYB">http://www.cs.uu.nl/wiki/GenericProgramming/SYB</a>.
 The present module provides a number of declarations for typical generic
 function types, corresponding type case, and others.</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:mkT">mkT</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> b) =&gt; (b -&gt; b) -&gt; a -&gt; a</li><li class="src short"><a href="#v:mkQ">mkQ</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> b) =&gt; r -&gt; (b -&gt; r) -&gt; a -&gt; r</li><li class="src short"><a href="#v:mkM">mkM</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Monad.html#t:Monad">Monad</a> m, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> b) =&gt; (b -&gt; m b) -&gt; a -&gt; m a</li><li class="src short"><a href="#v:mkMp">mkMp</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Monad.html#t:MonadPlus">MonadPlus</a> m, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> b) =&gt; (b -&gt; m b) -&gt; a -&gt; m a</li><li class="src short"><a href="#v:mkR">mkR</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Monad.html#t:MonadPlus">MonadPlus</a> m, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> b) =&gt; m b -&gt; m a</li><li class="src short"><a href="#v:ext0">ext0</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> b) =&gt; c a -&gt; c b -&gt; c a</li><li class="src short"><a href="#v:extT">extT</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> b) =&gt; (a -&gt; a) -&gt; (b -&gt; b) -&gt; a -&gt; a</li><li class="src short"><a href="#v:extQ">extQ</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> b) =&gt; (a -&gt; q) -&gt; (b -&gt; q) -&gt; a -&gt; q</li><li class="src short"><a href="#v:extM">extM</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Monad.html#t:Monad">Monad</a> m, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> b) =&gt; (a -&gt; m a) -&gt; (b -&gt; m b) -&gt; a -&gt; m a</li><li class="src short"><a href="#v:extMp">extMp</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Monad.html#t:MonadPlus">MonadPlus</a> m, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> b) =&gt; (a -&gt; m a) -&gt; (b -&gt; m b) -&gt; a -&gt; m a</li><li class="src short"><a href="#v:extB">extB</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> b) =&gt; a -&gt; b -&gt; a</li><li class="src short"><a href="#v:extR">extR</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Monad.html#t:Monad">Monad</a> m, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> b) =&gt; m a -&gt; m b -&gt; m a</li><li class="src short"><span class="keyword">type</span> <a href="#t:GenericT">GenericT</a> = <span class="keyword">forall</span> a. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> a =&gt; a -&gt; a</li><li class="src short"><span class="keyword">type</span> <a href="#t:GenericQ">GenericQ</a> r = <span class="keyword">forall</span> a. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> a =&gt; a -&gt; r</li><li class="src short"><span class="keyword">type</span> <a href="#t:GenericM">GenericM</a> m = <span class="keyword">forall</span> a. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> a =&gt; a -&gt; m a</li><li class="src short"><span class="keyword">type</span> <a href="#t:GenericB">GenericB</a> = <span class="keyword">forall</span> a. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> a =&gt; a</li><li class="src short"><span class="keyword">type</span> <a href="#t:GenericR">GenericR</a> m = <span class="keyword">forall</span> a. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> a =&gt; m a</li><li class="src short"><span class="keyword">type</span> <a href="#t:Generic">Generic</a> c = <span class="keyword">forall</span> a. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> a =&gt; a -&gt; c a</li><li class="src short"><span class="keyword">data</span> <a href="#t:Generic-39-">Generic'</a> c = <a href="#v:Generic-39-">Generic'</a> {<ul class="subs"><li><a href="#v:unGeneric-39-">unGeneric'</a> :: <a href="Data-Generics-Aliases.html#t:Generic">Generic</a> c</li></ul>}</li><li class="src short"><span class="keyword">newtype</span> <a href="#t:GenericT-39-">GenericT'</a> = <a href="#v:GT">GT</a> {<ul class="subs"><li><a href="#v:unGT">unGT</a> :: <span class="keyword">forall</span> a. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> a =&gt; a -&gt; a</li></ul>}</li><li class="src short"><span class="keyword">newtype</span> <a href="#t:GenericQ-39-">GenericQ'</a> r = <a href="#v:GQ">GQ</a> {<ul class="subs"><li><a href="#v:unGQ">unGQ</a> :: <a href="Data-Generics-Aliases.html#t:GenericQ">GenericQ</a> r</li></ul>}</li><li class="src short"><span class="keyword">newtype</span> <a href="#t:GenericM-39-">GenericM'</a> m = <a href="#v:GM">GM</a> {<ul class="subs"><li><a href="#v:unGM">unGM</a> :: <span class="keyword">forall</span> a. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> a =&gt; a -&gt; m a</li></ul>}</li><li class="src short"><a href="#v:orElse">orElse</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Maybe.html#t:Maybe">Maybe</a> a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Maybe.html#t:Maybe">Maybe</a> a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Maybe.html#t:Maybe">Maybe</a> a</li><li class="src short"><a href="#v:recoverMp">recoverMp</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Monad.html#t:MonadPlus">MonadPlus</a> m =&gt; <a href="Data-Generics-Aliases.html#t:GenericM">GenericM</a> m -&gt; <a href="Data-Generics-Aliases.html#t:GenericM">GenericM</a> m</li><li class="src short"><a href="#v:recoverQ">recoverQ</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Monad.html#t:MonadPlus">MonadPlus</a> m =&gt; r -&gt; <a href="Data-Generics-Aliases.html#t:GenericQ">GenericQ</a> (m r) -&gt; <a href="Data-Generics-Aliases.html#t:GenericQ">GenericQ</a> (m r)</li><li class="src short"><a href="#v:choiceMp">choiceMp</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Monad.html#t:MonadPlus">MonadPlus</a> m =&gt; <a href="Data-Generics-Aliases.html#t:GenericM">GenericM</a> m -&gt; <a href="Data-Generics-Aliases.html#t:GenericM">GenericM</a> m -&gt; <a href="Data-Generics-Aliases.html#t:GenericM">GenericM</a> m</li><li class="src short"><a href="#v:choiceQ">choiceQ</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Monad.html#t:MonadPlus">MonadPlus</a> m =&gt; <a href="Data-Generics-Aliases.html#t:GenericQ">GenericQ</a> (m r) -&gt; <a href="Data-Generics-Aliases.html#t:GenericQ">GenericQ</a> (m r) -&gt; <a href="Data-Generics-Aliases.html#t:GenericQ">GenericQ</a> (m r)</li><li class="src short"><a href="#v:ext1">ext1</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> t) =&gt; c a -&gt; (<span class="keyword">forall</span> d. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d =&gt; c (t d)) -&gt; c a</li><li class="src short"><a href="#v:ext1T">ext1T</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> t) =&gt; (<span class="keyword">forall</span> e. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> e =&gt; e -&gt; e) -&gt; (<span class="keyword">forall</span> f. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> f =&gt; t f -&gt; t f) -&gt; d -&gt; d</li><li class="src short"><a href="#v:ext1M">ext1M</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Monad.html#t:Monad">Monad</a> m, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> t) =&gt; (<span class="keyword">forall</span> e. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> e =&gt; e -&gt; m e) -&gt; (<span class="keyword">forall</span> f. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> f =&gt; t f -&gt; m (t f)) -&gt; d -&gt; m d</li><li class="src short"><a href="#v:ext1Q">ext1Q</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> t) =&gt; (d -&gt; q) -&gt; (<span class="keyword">forall</span> e. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> e =&gt; t e -&gt; q) -&gt; d -&gt; q</li><li class="src short"><a href="#v:ext1R">ext1R</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Monad.html#t:Monad">Monad</a> m, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> t) =&gt; m d -&gt; (<span class="keyword">forall</span> e. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> e =&gt; m (t e)) -&gt; m d</li><li class="src short"><a href="#v:ext1B">ext1B</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> t) =&gt; a -&gt; (<span class="keyword">forall</span> b. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> b =&gt; t b) -&gt; a</li><li class="src short"><a href="#v:ext2T">ext2T</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> t) =&gt; (<span class="keyword">forall</span> e. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> e =&gt; e -&gt; e) -&gt; (<span class="keyword">forall</span> d1 d2. (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d1, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d2) =&gt; t d1 d2 -&gt; t d1 d2) -&gt; d -&gt; d</li><li class="src short"><a href="#v:ext2M">ext2M</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Monad.html#t:Monad">Monad</a> m, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> t) =&gt; (<span class="keyword">forall</span> e. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> e =&gt; e -&gt; m e) -&gt; (<span class="keyword">forall</span> d1 d2. (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d1, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d2) =&gt; t d1 d2 -&gt; m (t d1 d2)) -&gt; d -&gt; m d</li><li class="src short"><a href="#v:ext2Q">ext2Q</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> t) =&gt; (d -&gt; q) -&gt; (<span class="keyword">forall</span> d1 d2. (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d1, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d2) =&gt; t d1 d2 -&gt; q) -&gt; d -&gt; q</li><li class="src short"><a href="#v:ext2R">ext2R</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Monad.html#t:Monad">Monad</a> m, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> t) =&gt; m d -&gt; (<span class="keyword">forall</span> d1 d2. (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d1, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d2) =&gt; m (t d1 d2)) -&gt; m d</li><li class="src short"><a href="#v:ext2B">ext2B</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> t) =&gt; a -&gt; (<span class="keyword">forall</span> d1 d2. (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d1, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d2) =&gt; t d1 d2) -&gt; a</li></ul></div><div id="interface"><h1 id="g:1">Combinators to &quot;make&quot; generic functions via cast</h1><div class="top"><p class="src"><a id="v:mkT" class="def">mkT</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> b) =&gt; (b -&gt; b) -&gt; a -&gt; a <a href="src/Data-Generics-Aliases.html#mkT" class="link">Source</a> <a href="#v:mkT" class="selflink">#</a></p><div class="doc"><p>Make a generic transformation;
   start from a type-specific case;
   preserve the term otherwise</p></div></div><div class="top"><p class="src"><a id="v:mkQ" class="def">mkQ</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> b) =&gt; r -&gt; (b -&gt; r) -&gt; a -&gt; r <a href="src/Data-Generics-Aliases.html#mkQ" class="link">Source</a> <a href="#v:mkQ" class="selflink">#</a></p><div class="doc"><p>Make a generic query;
   start from a type-specific case;
   return a constant otherwise</p></div></div><div class="top"><p class="src"><a id="v:mkM" class="def">mkM</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Monad.html#t:Monad">Monad</a> m, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> b) =&gt; (b -&gt; m b) -&gt; a -&gt; m a <a href="src/Data-Generics-Aliases.html#mkM" class="link">Source</a> <a href="#v:mkM" class="selflink">#</a></p><div class="doc"><p>Make a generic monadic transformation;
   start from a type-specific case;
   resort to return otherwise</p></div></div><div class="top"><p class="src"><a id="v:mkMp" class="def">mkMp</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Monad.html#t:MonadPlus">MonadPlus</a> m, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> b) =&gt; (b -&gt; m b) -&gt; a -&gt; m a <a href="src/Data-Generics-Aliases.html#mkMp" class="link">Source</a> <a href="#v:mkMp" class="selflink">#</a></p><div class="doc"><p>Make a generic monadic transformation for MonadPlus;
   use &quot;const mzero&quot; (i.e., failure) instead of return as default.</p></div></div><div class="top"><p class="src"><a id="v:mkR" class="def">mkR</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Monad.html#t:MonadPlus">MonadPlus</a> m, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> b) =&gt; m b -&gt; m a <a href="src/Data-Generics-Aliases.html#mkR" class="link">Source</a> <a href="#v:mkR" class="selflink">#</a></p><div class="doc"><p>Make a generic builder;
   start from a type-specific ase;
   resort to no build (i.e., mzero) otherwise</p></div></div><div class="top"><p class="src"><a id="v:ext0" class="def">ext0</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> b) =&gt; c a -&gt; c b -&gt; c a <a href="src/Data-Generics-Aliases.html#ext0" class="link">Source</a> <a href="#v:ext0" class="selflink">#</a></p><div class="doc"><p>Flexible type extension</p></div></div><div class="top"><p class="src"><a id="v:extT" class="def">extT</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> b) =&gt; (a -&gt; a) -&gt; (b -&gt; b) -&gt; a -&gt; a <a href="src/Data-Generics-Aliases.html#extT" class="link">Source</a> <a href="#v:extT" class="selflink">#</a></p><div class="doc"><p>Extend a generic transformation by a type-specific case</p></div></div><div class="top"><p class="src"><a id="v:extQ" class="def">extQ</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> b) =&gt; (a -&gt; q) -&gt; (b -&gt; q) -&gt; a -&gt; q <a href="src/Data-Generics-Aliases.html#extQ" class="link">Source</a> <a href="#v:extQ" class="selflink">#</a></p><div class="doc"><p>Extend a generic query by a type-specific case</p></div></div><div class="top"><p class="src"><a id="v:extM" class="def">extM</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Monad.html#t:Monad">Monad</a> m, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> b) =&gt; (a -&gt; m a) -&gt; (b -&gt; m b) -&gt; a -&gt; m a <a href="src/Data-Generics-Aliases.html#extM" class="link">Source</a> <a href="#v:extM" class="selflink">#</a></p><div class="doc"><p>Extend a generic monadic transformation by a type-specific case</p></div></div><div class="top"><p class="src"><a id="v:extMp" class="def">extMp</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Monad.html#t:MonadPlus">MonadPlus</a> m, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> b) =&gt; (a -&gt; m a) -&gt; (b -&gt; m b) -&gt; a -&gt; m a <a href="src/Data-Generics-Aliases.html#extMp" class="link">Source</a> <a href="#v:extMp" class="selflink">#</a></p><div class="doc"><p>Extend a generic MonadPlus transformation by a type-specific case</p></div></div><div class="top"><p class="src"><a id="v:extB" class="def">extB</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> b) =&gt; a -&gt; b -&gt; a <a href="src/Data-Generics-Aliases.html#extB" class="link">Source</a> <a href="#v:extB" class="selflink">#</a></p><div class="doc"><p>Extend a generic builder</p></div></div><div class="top"><p class="src"><a id="v:extR" class="def">extR</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Monad.html#t:Monad">Monad</a> m, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> b) =&gt; m a -&gt; m b -&gt; m a <a href="src/Data-Generics-Aliases.html#extR" class="link">Source</a> <a href="#v:extR" class="selflink">#</a></p><div class="doc"><p>Extend a generic reader</p></div></div><h1 id="g:2">Type synonyms for generic function types</h1><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:GenericT" class="def">GenericT</a> = <span class="keyword">forall</span> a. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> a =&gt; a -&gt; a <a href="src/Data-Generics-Aliases.html#GenericT" class="link">Source</a> <a href="#t:GenericT" class="selflink">#</a></p><div class="doc"><p>Generic transformations,
   i.e., take an &quot;a&quot; and return an &quot;a&quot;</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:GenericQ" class="def">GenericQ</a> r = <span class="keyword">forall</span> a. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> a =&gt; a -&gt; r <a href="src/Data-Generics-Aliases.html#GenericQ" class="link">Source</a> <a href="#t:GenericQ" class="selflink">#</a></p><div class="doc"><p>Generic queries of type &quot;r&quot;,
   i.e., take any &quot;a&quot; and return an &quot;r&quot;</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:GenericM" class="def">GenericM</a> m = <span class="keyword">forall</span> a. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> a =&gt; a -&gt; m a <a href="src/Data-Generics-Aliases.html#GenericM" class="link">Source</a> <a href="#t:GenericM" class="selflink">#</a></p><div class="doc"><p>Generic monadic transformations,
   i.e., take an &quot;a&quot; and compute an &quot;a&quot;</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:GenericB" class="def">GenericB</a> = <span class="keyword">forall</span> a. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> a =&gt; a <a href="src/Data-Generics-Aliases.html#GenericB" class="link">Source</a> <a href="#t:GenericB" class="selflink">#</a></p><div class="doc"><p>Generic builders
   i.e., produce an &quot;a&quot;.</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:GenericR" class="def">GenericR</a> m = <span class="keyword">forall</span> a. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> a =&gt; m a <a href="src/Data-Generics-Aliases.html#GenericR" class="link">Source</a> <a href="#t:GenericR" class="selflink">#</a></p><div class="doc"><p>Generic readers, say monadic builders,
   i.e., produce an &quot;a&quot; with the help of a monad &quot;m&quot;.</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a id="t:Generic" class="def">Generic</a> c = <span class="keyword">forall</span> a. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> a =&gt; a -&gt; c a <a href="src/Data-Generics-Aliases.html#Generic" class="link">Source</a> <a href="#t:Generic" class="selflink">#</a></p><div class="doc"><p>The general scheme underlying generic functions
   assumed by gfoldl; there are isomorphisms such as
   GenericT = Generic T.</p></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:Generic-39-" class="def">Generic'</a> c <a href="src/Data-Generics-Aliases.html#Generic%27" class="link">Source</a> <a href="#t:Generic-39-" class="selflink">#</a></p><div class="doc"><p>Wrapped generic functions;
   recall: [Generic c] would be legal but [Generic' c] not.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:Generic-39-" class="def">Generic'</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:unGeneric-39-" class="def">unGeneric'</a> :: <a href="Data-Generics-Aliases.html#t:Generic">Generic</a> c</dfn><div class="doc empty">&nbsp;</div></li></ul></div></td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">newtype</span> <a id="t:GenericT-39-" class="def">GenericT'</a> <a href="src/Data-Generics-Aliases.html#GenericT%27" class="link">Source</a> <a href="#t:GenericT-39-" class="selflink">#</a></p><div class="doc"><p>Other first-class polymorphic wrappers</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:GT" class="def">GT</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:unGT" class="def">unGT</a> :: <span class="keyword">forall</span> a. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> a =&gt; a -&gt; a</dfn><div class="doc empty">&nbsp;</div></li></ul></div></td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">newtype</span> <a id="t:GenericQ-39-" class="def">GenericQ'</a> r <a href="src/Data-Generics-Aliases.html#GenericQ%27" class="link">Source</a> <a href="#t:GenericQ-39-" class="selflink">#</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:GQ" class="def">GQ</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:unGQ" class="def">unGQ</a> :: <a href="Data-Generics-Aliases.html#t:GenericQ">GenericQ</a> r</dfn><div class="doc empty">&nbsp;</div></li></ul></div></td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">newtype</span> <a id="t:GenericM-39-" class="def">GenericM'</a> m <a href="src/Data-Generics-Aliases.html#GenericM%27" class="link">Source</a> <a href="#t:GenericM-39-" class="selflink">#</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:GM" class="def">GM</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:unGM" class="def">unGM</a> :: <span class="keyword">forall</span> a. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> a =&gt; a -&gt; m a</dfn><div class="doc empty">&nbsp;</div></li></ul></div></td></tr></table></div></div><h1 id="g:3">Ingredients of generic functions</h1><div class="top"><p class="src"><a id="v:orElse" class="def">orElse</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Maybe.html#t:Maybe">Maybe</a> a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Maybe.html#t:Maybe">Maybe</a> a -&gt; <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Maybe.html#t:Maybe">Maybe</a> a <a href="src/Data-Generics-Aliases.html#orElse" class="link">Source</a> <a href="#v:orElse" class="selflink">#</a></p><div class="doc"><p>Left-biased choice on maybes</p></div></div><h1 id="g:4">Function combinators on generic functions</h1><div class="top"><p class="src"><a id="v:recoverMp" class="def">recoverMp</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Monad.html#t:MonadPlus">MonadPlus</a> m =&gt; <a href="Data-Generics-Aliases.html#t:GenericM">GenericM</a> m -&gt; <a href="Data-Generics-Aliases.html#t:GenericM">GenericM</a> m <a href="src/Data-Generics-Aliases.html#recoverMp" class="link">Source</a> <a href="#v:recoverMp" class="selflink">#</a></p><div class="doc"><p>Recover from the failure of monadic transformation by identity</p></div></div><div class="top"><p class="src"><a id="v:recoverQ" class="def">recoverQ</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Monad.html#t:MonadPlus">MonadPlus</a> m =&gt; r -&gt; <a href="Data-Generics-Aliases.html#t:GenericQ">GenericQ</a> (m r) -&gt; <a href="Data-Generics-Aliases.html#t:GenericQ">GenericQ</a> (m r) <a href="src/Data-Generics-Aliases.html#recoverQ" class="link">Source</a> <a href="#v:recoverQ" class="selflink">#</a></p><div class="doc"><p>Recover from the failure of monadic query by a constant</p></div></div><div class="top"><p class="src"><a id="v:choiceMp" class="def">choiceMp</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Monad.html#t:MonadPlus">MonadPlus</a> m =&gt; <a href="Data-Generics-Aliases.html#t:GenericM">GenericM</a> m -&gt; <a href="Data-Generics-Aliases.html#t:GenericM">GenericM</a> m -&gt; <a href="Data-Generics-Aliases.html#t:GenericM">GenericM</a> m <a href="src/Data-Generics-Aliases.html#choiceMp" class="link">Source</a> <a href="#v:choiceMp" class="selflink">#</a></p><div class="doc"><p>Choice for monadic transformations</p></div></div><div class="top"><p class="src"><a id="v:choiceQ" class="def">choiceQ</a> :: <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Monad.html#t:MonadPlus">MonadPlus</a> m =&gt; <a href="Data-Generics-Aliases.html#t:GenericQ">GenericQ</a> (m r) -&gt; <a href="Data-Generics-Aliases.html#t:GenericQ">GenericQ</a> (m r) -&gt; <a href="Data-Generics-Aliases.html#t:GenericQ">GenericQ</a> (m r) <a href="src/Data-Generics-Aliases.html#choiceQ" class="link">Source</a> <a href="#v:choiceQ" class="selflink">#</a></p><div class="doc"><p>Choice for monadic queries</p></div></div><h1 id="g:5">Type extension for unary type constructors</h1><div class="top"><p class="src"><a id="v:ext1" class="def">ext1</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> t) =&gt; c a -&gt; (<span class="keyword">forall</span> d. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d =&gt; c (t d)) -&gt; c a <a href="src/Data-Generics-Aliases.html#ext1" class="link">Source</a> <a href="#v:ext1" class="selflink">#</a></p><div class="doc"><p>Flexible type extension</p></div></div><div class="top"><p class="src"><a id="v:ext1T" class="def">ext1T</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> t) =&gt; (<span class="keyword">forall</span> e. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> e =&gt; e -&gt; e) -&gt; (<span class="keyword">forall</span> f. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> f =&gt; t f -&gt; t f) -&gt; d -&gt; d <a href="src/Data-Generics-Aliases.html#ext1T" class="link">Source</a> <a href="#v:ext1T" class="selflink">#</a></p><div class="doc"><p>Type extension of transformations for unary type constructors</p></div></div><div class="top"><p class="src"><a id="v:ext1M" class="def">ext1M</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Monad.html#t:Monad">Monad</a> m, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> t) =&gt; (<span class="keyword">forall</span> e. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> e =&gt; e -&gt; m e) -&gt; (<span class="keyword">forall</span> f. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> f =&gt; t f -&gt; m (t f)) -&gt; d -&gt; m d <a href="src/Data-Generics-Aliases.html#ext1M" class="link">Source</a> <a href="#v:ext1M" class="selflink">#</a></p><div class="doc"><p>Type extension of monadic transformations for type constructors</p></div></div><div class="top"><p class="src"><a id="v:ext1Q" class="def">ext1Q</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> t) =&gt; (d -&gt; q) -&gt; (<span class="keyword">forall</span> e. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> e =&gt; t e -&gt; q) -&gt; d -&gt; q <a href="src/Data-Generics-Aliases.html#ext1Q" class="link">Source</a> <a href="#v:ext1Q" class="selflink">#</a></p><div class="doc"><p>Type extension of queries for type constructors</p></div></div><div class="top"><p class="src"><a id="v:ext1R" class="def">ext1R</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Monad.html#t:Monad">Monad</a> m, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> t) =&gt; m d -&gt; (<span class="keyword">forall</span> e. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> e =&gt; m (t e)) -&gt; m d <a href="src/Data-Generics-Aliases.html#ext1R" class="link">Source</a> <a href="#v:ext1R" class="selflink">#</a></p><div class="doc"><p>Type extension of readers for type constructors</p></div></div><div class="top"><p class="src"><a id="v:ext1B" class="def">ext1B</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> t) =&gt; a -&gt; (<span class="keyword">forall</span> b. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> b =&gt; t b) -&gt; a <a href="src/Data-Generics-Aliases.html#ext1B" class="link">Source</a> <a href="#v:ext1B" class="selflink">#</a></p><div class="doc"><p>Type extension of builders for type constructors</p></div></div><h1 id="g:6">Type extension for binary type constructors</h1><div class="top"><p class="src"><a id="v:ext2T" class="def">ext2T</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> t) =&gt; (<span class="keyword">forall</span> e. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> e =&gt; e -&gt; e) -&gt; (<span class="keyword">forall</span> d1 d2. (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d1, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d2) =&gt; t d1 d2 -&gt; t d1 d2) -&gt; d -&gt; d <a href="src/Data-Generics-Aliases.html#ext2T" class="link">Source</a> <a href="#v:ext2T" class="selflink">#</a></p><div class="doc"><p>Type extension of transformations for unary type constructors</p></div></div><div class="top"><p class="src"><a id="v:ext2M" class="def">ext2M</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Monad.html#t:Monad">Monad</a> m, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> t) =&gt; (<span class="keyword">forall</span> e. <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> e =&gt; e -&gt; m e) -&gt; (<span class="keyword">forall</span> d1 d2. (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d1, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d2) =&gt; t d1 d2 -&gt; m (t d1 d2)) -&gt; d -&gt; m d <a href="src/Data-Generics-Aliases.html#ext2M" class="link">Source</a> <a href="#v:ext2M" class="selflink">#</a></p><div class="doc"><p>Type extension of monadic transformations for type constructors</p></div></div><div class="top"><p class="src"><a id="v:ext2Q" class="def">ext2Q</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> t) =&gt; (d -&gt; q) -&gt; (<span class="keyword">forall</span> d1 d2. (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d1, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d2) =&gt; t d1 d2 -&gt; q) -&gt; d -&gt; q <a href="src/Data-Generics-Aliases.html#ext2Q" class="link">Source</a> <a href="#v:ext2Q" class="selflink">#</a></p><div class="doc"><p>Type extension of queries for type constructors</p></div></div><div class="top"><p class="src"><a id="v:ext2R" class="def">ext2R</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Control-Monad.html#t:Monad">Monad</a> m, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> t) =&gt; m d -&gt; (<span class="keyword">forall</span> d1 d2. (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d1, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d2) =&gt; m (t d1 d2)) -&gt; m d <a href="src/Data-Generics-Aliases.html#ext2R" class="link">Source</a> <a href="#v:ext2R" class="selflink">#</a></p><div class="doc"><p>Type extension of readers for type constructors</p></div></div><div class="top"><p class="src"><a id="v:ext2B" class="def">ext2B</a> :: (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> a, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> t) =&gt; a -&gt; (<span class="keyword">forall</span> d1 d2. (<a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d1, <a href="file:///usr/share/doc/ghc-doc/html/libraries/base-4.9.0.0/Data-Data.html#t:Data">Data</a> d2) =&gt; t d1 d2) -&gt; a <a href="src/Data-Generics-Aliases.html#ext2B" class="link">Source</a> <a href="#v:ext2B" class="selflink">#</a></p><div class="doc"><p>Type extension of builders for type constructors</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.17.2</p></div></body></html>