<!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.Schemes</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-Schemes.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.1: 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.Schemes</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 CLASS="section1" >Description</TD ></TR ><TR ><TD CLASS="doc" >"Scrap your boilerplate" --- Generic programming in Haskell See <A HREF="http://www.cs.vu.nl/boilerplate/" >http://www.cs.vu.nl/boilerplate/</A >. The present module provides frequently used generic traversal schemes. </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%3Aeverywhere" >everywhere</A > :: (<SPAN CLASS="keyword" >forall</SPAN > a. <A HREF="../base/Data-Data.html#t%3AData" >Data</A > a => a -> a) -> <SPAN CLASS="keyword" >forall</SPAN > a. <A HREF="../base/Data-Data.html#t%3AData" >Data</A > a => a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aeverywhere%27" >everywhere'</A > :: (<SPAN CLASS="keyword" >forall</SPAN > a. <A HREF="../base/Data-Data.html#t%3AData" >Data</A > a => a -> a) -> <SPAN CLASS="keyword" >forall</SPAN > a. <A HREF="../base/Data-Data.html#t%3AData" >Data</A > a => a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AeverywhereBut" >everywhereBut</A > :: <A HREF="Data-Generics-Aliases.html#t%3AGenericQ" >GenericQ</A > <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > -> <A HREF="Data-Generics-Aliases.html#t%3AGenericT" >GenericT</A > -> <A HREF="Data-Generics-Aliases.html#t%3AGenericT" >GenericT</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AeverywhereM" >everywhereM</A > :: <A HREF="../base/Control-Monad.html#t%3AMonad" >Monad</A > m => <A HREF="Data-Generics-Aliases.html#t%3AGenericM" >GenericM</A > m -> <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%3Asomewhere" >somewhere</A > :: <A HREF="../base/Control-Monad.html#t%3AMonadPlus" >MonadPlus</A > m => <A HREF="Data-Generics-Aliases.html#t%3AGenericM" >GenericM</A > m -> <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%3Aeverything" >everything</A > :: (r -> r -> r) -> <A HREF="Data-Generics-Aliases.html#t%3AGenericQ" >GenericQ</A > r -> <A HREF="Data-Generics-Aliases.html#t%3AGenericQ" >GenericQ</A > r</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Alistify" >listify</A > :: <A HREF="../base/Data-Typeable.html#t%3ATypeable" >Typeable</A > r => (r -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A >) -> <A HREF="Data-Generics-Aliases.html#t%3AGenericQ" >GenericQ</A > [r]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Asomething" >something</A > :: <A HREF="Data-Generics-Aliases.html#t%3AGenericQ" >GenericQ</A > (<A HREF="../base/Data-Maybe.html#t%3AMaybe" >Maybe</A > u) -> <A HREF="Data-Generics-Aliases.html#t%3AGenericQ" >GenericQ</A > (<A HREF="../base/Data-Maybe.html#t%3AMaybe" >Maybe</A > u)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Asynthesize" >synthesize</A > :: s -> (t -> s -> s) -> <A HREF="Data-Generics-Aliases.html#t%3AGenericQ" >GenericQ</A > (s -> t) -> <A HREF="Data-Generics-Aliases.html#t%3AGenericQ" >GenericQ</A > t</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Agsize" >gsize</A > :: <A HREF="../base/Data-Data.html#t%3AData" >Data</A > a => a -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aglength" >glength</A > :: <A HREF="Data-Generics-Aliases.html#t%3AGenericQ" >GenericQ</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Agdepth" >gdepth</A > :: <A HREF="Data-Generics-Aliases.html#t%3AGenericQ" >GenericQ</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Agcount" >gcount</A > :: <A HREF="Data-Generics-Aliases.html#t%3AGenericQ" >GenericQ</A > <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > -> <A HREF="Data-Generics-Aliases.html#t%3AGenericQ" >GenericQ</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Agnodecount" >gnodecount</A > :: <A HREF="Data-Generics-Aliases.html#t%3AGenericQ" >GenericQ</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Agtypecount" >gtypecount</A > :: <A HREF="../base/Data-Typeable.html#t%3ATypeable" >Typeable</A > a => a -> <A HREF="Data-Generics-Aliases.html#t%3AGenericQ" >GenericQ</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Agfindtype" >gfindtype</A > :: (<A HREF="../base/Data-Data.html#t%3AData" >Data</A > x, <A HREF="../base/Data-Typeable.html#t%3ATypeable" >Typeable</A > y) => x -> <A HREF="../base/Data-Maybe.html#t%3AMaybe" >Maybe</A > y</TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Documentation</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:everywhere" ><A NAME="v%3Aeverywhere" ></A ></A ><B >everywhere</B > :: (<SPAN CLASS="keyword" >forall</SPAN > a. <A HREF="../base/Data-Data.html#t%3AData" >Data</A > a => a -> a) -> <SPAN CLASS="keyword" >forall</SPAN > a. <A HREF="../base/Data-Data.html#t%3AData" >Data</A > a => a -> a</TD ></TR ><TR ><TD CLASS="doc" >Apply a transformation everywhere in bottom-up manner </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:everywhere'" ><A NAME="v%3Aeverywhere%27" ></A ></A ><B >everywhere'</B > :: (<SPAN CLASS="keyword" >forall</SPAN > a. <A HREF="../base/Data-Data.html#t%3AData" >Data</A > a => a -> a) -> <SPAN CLASS="keyword" >forall</SPAN > a. <A HREF="../base/Data-Data.html#t%3AData" >Data</A > a => a -> a</TD ></TR ><TR ><TD CLASS="doc" >Apply a transformation everywhere in top-down manner </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:everywhereBut" ><A NAME="v%3AeverywhereBut" ></A ></A ><B >everywhereBut</B > :: <A HREF="Data-Generics-Aliases.html#t%3AGenericQ" >GenericQ</A > <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > -> <A HREF="Data-Generics-Aliases.html#t%3AGenericT" >GenericT</A > -> <A HREF="Data-Generics-Aliases.html#t%3AGenericT" >GenericT</A ></TD ></TR ><TR ><TD CLASS="doc" >Variation on everywhere with an extra stop condition </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:everywhereM" ><A NAME="v%3AeverywhereM" ></A ></A ><B >everywhereM</B > :: <A HREF="../base/Control-Monad.html#t%3AMonad" >Monad</A > m => <A HREF="Data-Generics-Aliases.html#t%3AGenericM" >GenericM</A > m -> <A HREF="Data-Generics-Aliases.html#t%3AGenericM" >GenericM</A > m</TD ></TR ><TR ><TD CLASS="doc" >Monadic variation on everywhere </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:somewhere" ><A NAME="v%3Asomewhere" ></A ></A ><B >somewhere</B > :: <A HREF="../base/Control-Monad.html#t%3AMonadPlus" >MonadPlus</A > m => <A HREF="Data-Generics-Aliases.html#t%3AGenericM" >GenericM</A > m -> <A HREF="Data-Generics-Aliases.html#t%3AGenericM" >GenericM</A > m</TD ></TR ><TR ><TD CLASS="doc" >Apply a monadic transformation at least somewhere </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:everything" ><A NAME="v%3Aeverything" ></A ></A ><B >everything</B > :: (r -> r -> r) -> <A HREF="Data-Generics-Aliases.html#t%3AGenericQ" >GenericQ</A > r -> <A HREF="Data-Generics-Aliases.html#t%3AGenericQ" >GenericQ</A > r</TD ></TR ><TR ><TD CLASS="doc" >Summarise all nodes in top-down, left-to-right order </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:listify" ><A NAME="v%3Alistify" ></A ></A ><B >listify</B > :: <A HREF="../base/Data-Typeable.html#t%3ATypeable" >Typeable</A > r => (r -> <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A >) -> <A HREF="Data-Generics-Aliases.html#t%3AGenericQ" >GenericQ</A > [r]</TD ></TR ><TR ><TD CLASS="doc" >Get a list of all entities that meet a predicate </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:something" ><A NAME="v%3Asomething" ></A ></A ><B >something</B > :: <A HREF="Data-Generics-Aliases.html#t%3AGenericQ" >GenericQ</A > (<A HREF="../base/Data-Maybe.html#t%3AMaybe" >Maybe</A > u) -> <A HREF="Data-Generics-Aliases.html#t%3AGenericQ" >GenericQ</A > (<A HREF="../base/Data-Maybe.html#t%3AMaybe" >Maybe</A > u)</TD ></TR ><TR ><TD CLASS="doc" >Look up a subterm by means of a maybe-typed filter </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:synthesize" ><A NAME="v%3Asynthesize" ></A ></A ><B >synthesize</B > :: s -> (t -> s -> s) -> <A HREF="Data-Generics-Aliases.html#t%3AGenericQ" >GenericQ</A > (s -> t) -> <A HREF="Data-Generics-Aliases.html#t%3AGenericQ" >GenericQ</A > t</TD ></TR ><TR ><TD CLASS="doc" >Bottom-up synthesis of a data structure; 1st argument z is the initial element for the synthesis; 2nd argument o is for reduction of results from subterms; 3rd argument f updates the synthesised data according to the given term </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:gsize" ><A NAME="v%3Agsize" ></A ></A ><B >gsize</B > :: <A HREF="../base/Data-Data.html#t%3AData" >Data</A > a => a -> <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="doc" >Compute size of an arbitrary data structure </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:glength" ><A NAME="v%3Aglength" ></A ></A ><B >glength</B > :: <A HREF="Data-Generics-Aliases.html#t%3AGenericQ" >GenericQ</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="doc" >Count the number of immediate subterms of the given term </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:gdepth" ><A NAME="v%3Agdepth" ></A ></A ><B >gdepth</B > :: <A HREF="Data-Generics-Aliases.html#t%3AGenericQ" >GenericQ</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="doc" >Determine depth of the given term </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:gcount" ><A NAME="v%3Agcount" ></A ></A ><B >gcount</B > :: <A HREF="Data-Generics-Aliases.html#t%3AGenericQ" >GenericQ</A > <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool" >Bool</A > -> <A HREF="Data-Generics-Aliases.html#t%3AGenericQ" >GenericQ</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="doc" >Determine the number of all suitable nodes in a given term </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:gnodecount" ><A NAME="v%3Agnodecount" ></A ></A ><B >gnodecount</B > :: <A HREF="Data-Generics-Aliases.html#t%3AGenericQ" >GenericQ</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="doc" >Determine the number of all nodes in a given term </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:gtypecount" ><A NAME="v%3Agtypecount" ></A ></A ><B >gtypecount</B > :: <A HREF="../base/Data-Typeable.html#t%3ATypeable" >Typeable</A > a => a -> <A HREF="Data-Generics-Aliases.html#t%3AGenericQ" >GenericQ</A > <A HREF="../ghc-prim/GHC-Types.html#t%3AInt" >Int</A ></TD ></TR ><TR ><TD CLASS="doc" >Determine the number of nodes of a given type in a given term </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:gfindtype" ><A NAME="v%3Agfindtype" ></A ></A ><B >gfindtype</B > :: (<A HREF="../base/Data-Data.html#t%3AData" >Data</A > x, <A HREF="../base/Data-Typeable.html#t%3ATypeable" >Typeable</A > y) => x -> <A HREF="../base/Data-Maybe.html#t%3AMaybe" >Maybe</A > y</TD ></TR ><TR ><TD CLASS="doc" >Find (unambiguously) an immediate subterm of a given type </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 >