packages feed

hommage-0.0.5: doc/Sound.Hommage.Parameter.html

<!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
  ><TITLE
    >Sound.Hommage.Parameter</TITLE
    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"
    ></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"
	      ></TD
	      ><TD CLASS = "topbut"
	      ><A HREF = "Sound.Hommage.html"
		>Parent</A
		></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"
		>Sound.Hommage.Parameter</FONT
		></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"
		    > Field</A
		    ></DT
		  ><DT
		  ><A HREF = "#2"
		    > Hetero List</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"
	> This module contains a datatype <TT
	  ><A HREF = "Sound.Hommage.Parameter.html#t%3AField"
	    >Field</A
	    ></TT
	  > and sone type classes. It is used
   to construct record-like datatypes.</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"
		>data</SPAN
		> <A HREF = "#t%3AField"
		>Field</A
		> c a = <A HREF = "#v%3AField"
		>Field</A
		> {<TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "recfield"
		    ><A HREF = "#v%3AgetField"
		      >getField</A
		      > :: (c -&gt; a)</TD
		    ></TR
		  ><TR
		  ><TD CLASS = "recfield"
		    ><A HREF = "#v%3AsetField"
		      >setField</A
		      > :: ((a -&gt; a) -&gt; c -&gt; c)</TD
		    ></TR
		  ></TABLE
		>}</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><A HREF = "#v%3A%3C%3E"
		>(&lt;&gt;)</A
		> :: <A HREF = "Sound.Hommage.Parameter.html#t%3AField"
		>Field</A
		> a b -&gt; <A HREF = "Sound.Hommage.Parameter.html#t%3AField"
		>Field</A
		> c a -&gt; <A HREF = "Sound.Hommage.Parameter.html#t%3AField"
		>Field</A
		> c b</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><A HREF = "#v%3AfstField"
		>fstField</A
		> :: <A HREF = "Sound.Hommage.Parameter.html#t%3AField"
		>Field</A
		> (a, b) a</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><A HREF = "#v%3AsndField"
		>sndField</A
		> :: <A HREF = "Sound.Hommage.Parameter.html#t%3AField"
		>Field</A
		> (a, b) b</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><SPAN CLASS = "keyword"
		      >data</SPAN
		      > <A HREF = "#t%3AUpdateField"
		      >UpdateField</A
		      > c</TD
		    ></TR
		  ><TR
		  ><TD CLASS = "body"
		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
		      ><TR
			><TD CLASS = "decl"
			  >= <SPAN CLASS = "keyword"
			    >forall</SPAN
			    > a . <A HREF = "#v%3A%3A%3D"
			    >(:=)</A
			    > (<A HREF = "Sound.Hommage.Parameter.html#t%3AField"
			    >Field</A
			    > c a) a</TD
			  ></TR
			><TR
			><TD CLASS = "decl"
			  >| <SPAN CLASS = "keyword"
			    >forall</SPAN
			    > a . <A HREF = "#v%3A%3A%24"
			    >(:$)</A
			    > (<A HREF = "Sound.Hommage.Parameter.html#t%3AField"
			    >Field</A
			    > c a) (a -&gt; a)</TD
			  ></TR
			><TR
			><TD CLASS = "decl"
			  >| <A HREF = "#v%3AIf"
			    >If</A
			    > (<A HREF = "Sound.Hommage.Parameter.html#t%3ACheckField"
			    >CheckField</A
			    > c) [<A HREF = "Sound.Hommage.Parameter.html#t%3AUpdateField"
			    >UpdateField</A
			    > c] [<A HREF = "Sound.Hommage.Parameter.html#t%3AUpdateField"
			    >UpdateField</A
			    > c]</TD
			  ></TR
			></TABLE
		      ></TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><SPAN CLASS = "keyword"
		      >data</SPAN
		      > <A HREF = "#t%3ACheckField"
		      >CheckField</A
		      > c</TD
		    ></TR
		  ><TR
		  ><TD CLASS = "body"
		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
		      ><TR
			><TD CLASS = "decl"
			  >= <SPAN CLASS = "keyword"
			    >forall</SPAN
			    > a . <A HREF = "#v%3A%3A%3F"
			    >(:?)</A
			    > (<A HREF = "Sound.Hommage.Parameter.html#t%3AField"
			    >Field</A
			    > c a) (a -&gt; Bool)</TD
			  ></TR
			><TR
			><TD CLASS = "decl"
			  >| <A HREF = "#v%3AAnd"
			    >And</A
			    > [<A HREF = "Sound.Hommage.Parameter.html#t%3ACheckField"
			    >CheckField</A
			    > c]</TD
			  ></TR
			><TR
			><TD CLASS = "decl"
			  >| <A HREF = "#v%3AOr"
			    >Or</A
			    > [<A HREF = "Sound.Hommage.Parameter.html#t%3ACheckField"
			    >CheckField</A
			    > c]</TD
			  ></TR
			></TABLE
		      ></TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><A HREF = "#v%3AupdateField"
		>updateField</A
		> :: <A HREF = "Sound.Hommage.Parameter.html#t%3AUpdateField"
		>UpdateField</A
		> c -&gt; c -&gt; c</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><A HREF = "#v%3AcheckField"
		>checkField</A
		> :: <A HREF = "Sound.Hommage.Parameter.html#t%3ACheckField"
		>CheckField</A
		> c -&gt; c -&gt; Bool</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><A HREF = "#v%3AapplyField"
		>applyField</A
		> :: [<A HREF = "Sound.Hommage.Parameter.html#t%3AUpdateField"
		>UpdateField</A
		> c] -&gt; c -&gt; c</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><A HREF = "#v%3AwithField"
		>withField</A
		> :: [<A HREF = "Sound.Hommage.Parameter.html#t%3AUpdateField"
		>UpdateField</A
		> a] -&gt; (a -&gt; b) -&gt; a -&gt; b</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><SPAN CLASS = "keyword"
		>data</SPAN
		> <A HREF = "#t%3AGroup"
		>Group</A
		> c a = <A HREF = "#v%3AGroup"
		>Group</A
		> {<TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "recfield"
		    ><A HREF = "#v%3AisGroup"
		      >isGroup</A
		      > :: (c -&gt; Maybe a)</TD
		    ></TR
		  ><TR
		  ><TD CLASS = "recfield"
		    ><A HREF = "#v%3AmkGroup"
		      >mkGroup</A
		      > :: (a -&gt; c)</TD
		    ></TR
		  ></TABLE
		>}</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><A HREF = "#v%3AleftGroup"
		>leftGroup</A
		> :: <A HREF = "Sound.Hommage.Parameter.html#t%3AGroup"
		>Group</A
		> (Either a b) a</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><A HREF = "#v%3ArightGroup"
		>rightGroup</A
		> :: <A HREF = "Sound.Hommage.Parameter.html#t%3AGroup"
		>Group</A
		> (Either a b) b</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><A HREF = "#v%3A%3E%3C"
		>(&gt;&lt;)</A
		> :: <A HREF = "Sound.Hommage.Parameter.html#t%3AGroup"
		>Group</A
		> a b -&gt; <A HREF = "Sound.Hommage.Parameter.html#t%3AGroup"
		>Group</A
		> c a -&gt; <A HREF = "Sound.Hommage.Parameter.html#t%3AGroup"
		>Group</A
		> c b</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><SPAN CLASS = "keyword"
		>data</SPAN
		> <A HREF = "#t%3ALM"
		>LM</A
		> a b m = <A HREF = "#v%3A%3A%3E%3E"
		>(:&gt;&gt;)</A
		> (m a) (b m)</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><SPAN CLASS = "keyword"
		>data</SPAN
		> <A HREF = "#t%3ANilM"
		>NilM</A
		> m = <A HREF = "#v%3ANilM"
		>NilM</A
		></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><SPAN CLASS = "keyword"
		>class</SPAN
		> <A HREF = "#t%3APushFields"
		>PushFields</A
		> m  <SPAN CLASS = "keyword"
		>where</SPAN
		></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "body"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><A HREF = "#v%3ApushFields"
		      >pushFields</A
		      > :: m (<A HREF = "Sound.Hommage.Parameter.html#t%3AField"
		      >Field</A
		      > c) -&gt; m (<A HREF = "Sound.Hommage.Parameter.html#t%3AField"
		      >Field</A
		      > (x, c))</TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><SPAN CLASS = "keyword"
		>class</SPAN
		> <A HREF = "#t%3AToFields"
		>ToFields</A
		> a r  <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%3AtoFields"
		      >toFields</A
		      > :: a -&gt; r (<A HREF = "Sound.Hommage.Parameter.html#t%3AField"
		      >Field</A
		      > a)</TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><SPAN CLASS = "keyword"
		>class</SPAN
		> <A HREF = "#t%3APushGroups"
		>PushGroups</A
		> m  <SPAN CLASS = "keyword"
		>where</SPAN
		></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "body"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><A HREF = "#v%3ApushGroups"
		      >pushGroups</A
		      > :: m (<A HREF = "Sound.Hommage.Parameter.html#t%3AGroup"
		      >Group</A
		      > c) -&gt; m (<A HREF = "Sound.Hommage.Parameter.html#t%3AGroup"
		      >Group</A
		      > (Either x c))</TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><SPAN CLASS = "keyword"
		>class</SPAN
		> <A HREF = "#t%3AToGroups"
		>ToGroups</A
		> a r  <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%3AtoGroups"
		      >toGroups</A
		      > :: a -&gt; r (<A HREF = "Sound.Hommage.Parameter.html#t%3AGroup"
		      >Group</A
		      > a)</TD
		    ></TR
		  ></TABLE
		></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 = "doc"
	><P
	  > Example:</P
	  ><P
	  >   To create a &quot;record&quot; with the accessors/modificators first you have to define the type
   of the record, It must be a right-associative list of pairs, just like a LISP list.
   The rightmost element must be <TT
	    > () </TT
	    >. The following Example defines a record with information
   for music generation. </P
	  ><PRE
	  > type DefaultNote = (Int, (Double, (Char, ())))     </PRE
	  ><P
	  >   Then a default value should be defined. </P
	  ><PRE
	  > defaultNote = (0, (1.0, ('a' , ())))
 defaultNote :: DefaultNote </PRE
	  ><P
	  >   For each &quot;datafield&quot; the <TT
	    ><A HREF = "Sound.Hommage.Parameter.html#t%3AField"
	      >Field</A
	      ></TT
	    > must be declared.</P
	  ><PRE
	  > pitch :: Field DefaultNote Int 
 volume :: Field DefaultNote Double 
 channel :: Field DefaultNote Char </PRE
	  ><P
	  >  Creating the fields is done with toField applied to a value of the &quot;record&quot; type.</P
	  ><PRE
	  > pitch :&gt;&gt; volume :&gt;&gt; channel :&gt;&gt; NilM = toFields defaultNote </PRE
	  ><P
	  >  Is is recommended to declare all types and match all results of <TT
	    ><A HREF = "Sound.Hommage.Parameter.html#v%3AtoFields"
	      >toFields</A
	      ></TT
	    > incl. the <TT
	    ><A HREF = "Sound.Hommage.Parameter.html#t%3ANilM"
	      >NilM</A
	      ></TT
	    > at
  the end.</P
	  ><P
	  >  NOTE:</P
	  ><PRE
	  > pitch :&gt;&gt; volume :&gt;&gt; channel :&gt;&gt; NilM = toFields (undefined :: DefaultNote)</PRE
	  ><P
	  >  should work too.
</P
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "section1"
	><A NAME = "1"
	  > Field</A
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><SPAN CLASS = "keyword"
	  >data</SPAN
	  > <A NAME = "t%3AField"
	  ></A
	  ><B
	  >Field</B
	  > c a</TD
	></TR
      ><TR
      ><TD CLASS = "body"
	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
	  ><TR
	    ><TD CLASS = "ndoc"
	      > A <TT
		> Field record field </TT
		> is an interface to access a type <TT
		> field </TT
		> which 
   is part of a type <TT
		> record </TT
		>.
   A <TT
		><A HREF = "Sound.Hommage.Parameter.html#t%3AField"
		  >Field</A
		  ></TT
		> is used to access and modify subtypes (&quot;datafields&quot;) of 
   a record-like datastructure. In this module, a right-associative pair structure is
   taken as record-type with &quot;datafields&quot; in the fst parts of the pairs.</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "section4"
	      >Constructors</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "body"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "5" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><A NAME = "v%3AField"
		      ></A
		      ><B
		      >Field</B
		      ></TD
		    ><TD CLASS = "rdoc"
		    ></TD
		    ></TR
		  ><TR
		  ><TD CLASS = "body" COLSPAN = "2"
		    ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"
		      ><TR
			><TD CLASS = "decl"
			  ><A NAME = "v%3AgetField"
			    ></A
			    ><B
			    >getField</B
			    > :: (c -&gt; a)</TD
			  ><TD CLASS = "rdoc"
			  ></TD
			  ></TR
			><TR
			><TD CLASS = "decl"
			  ><A NAME = "v%3AsetField"
			    ></A
			    ><B
			    >setField</B
			    > :: ((a -&gt; a) -&gt; c -&gt; 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"
	><A NAME = "v%3A%3C%3E"
	  ></A
	  ><B
	  >(&lt;&gt;)</B
	  > :: <A HREF = "Sound.Hommage.Parameter.html#t%3AField"
	  >Field</A
	  > a b -&gt; <A HREF = "Sound.Hommage.Parameter.html#t%3AField"
	  >Field</A
	  > c a -&gt; <A HREF = "Sound.Hommage.Parameter.html#t%3AField"
	  >Field</A
	  > c b</TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><A NAME = "v%3AfstField"
	  ></A
	  ><B
	  >fstField</B
	  > :: <A HREF = "Sound.Hommage.Parameter.html#t%3AField"
	  >Field</A
	  > (a, b) a</TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><A NAME = "v%3AsndField"
	  ></A
	  ><B
	  >sndField</B
	  > :: <A HREF = "Sound.Hommage.Parameter.html#t%3AField"
	  >Field</A
	  > (a, b) b</TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><SPAN CLASS = "keyword"
	  >data</SPAN
	  > <A NAME = "t%3AUpdateField"
	  ></A
	  ><B
	  >UpdateField</B
	  > c</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 = "1" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><SPAN CLASS = "keyword"
		      >forall</SPAN
		      > a . <A NAME = "v%3A%3A%3D"
		      ></A
		      ><B
		      >(:=)</B
		      > (<A HREF = "Sound.Hommage.Parameter.html#t%3AField"
		      >Field</A
		      > c a) a</TD
		    ><TD CLASS = "rdoc"
		    ></TD
		    ></TR
		  ><TR
		  ><TD CLASS = "decl"
		    ><SPAN CLASS = "keyword"
		      >forall</SPAN
		      > a . <A NAME = "v%3A%3A%24"
		      ></A
		      ><B
		      >(:$)</B
		      > (<A HREF = "Sound.Hommage.Parameter.html#t%3AField"
		      >Field</A
		      > c a) (a -&gt; a)</TD
		    ><TD CLASS = "rdoc"
		    ></TD
		    ></TR
		  ><TR
		  ><TD CLASS = "decl"
		    ><A NAME = "v%3AIf"
		      ></A
		      ><B
		      >If</B
		      > (<A HREF = "Sound.Hommage.Parameter.html#t%3ACheckField"
		      >CheckField</A
		      > c) [<A HREF = "Sound.Hommage.Parameter.html#t%3AUpdateField"
		      >UpdateField</A
		      > c] [<A HREF = "Sound.Hommage.Parameter.html#t%3AUpdateField"
		      >UpdateField</A
		      > c]</TD
		    ><TD CLASS = "rdoc"
		    ></TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ></TABLE
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><SPAN CLASS = "keyword"
	  >data</SPAN
	  > <A NAME = "t%3ACheckField"
	  ></A
	  ><B
	  >CheckField</B
	  > c</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 = "1" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><SPAN CLASS = "keyword"
		      >forall</SPAN
		      > a . <A NAME = "v%3A%3A%3F"
		      ></A
		      ><B
		      >(:?)</B
		      > (<A HREF = "Sound.Hommage.Parameter.html#t%3AField"
		      >Field</A
		      > c a) (a -&gt; Bool)</TD
		    ><TD CLASS = "rdoc"
		    ></TD
		    ></TR
		  ><TR
		  ><TD CLASS = "decl"
		    ><A NAME = "v%3AAnd"
		      ></A
		      ><B
		      >And</B
		      > [<A HREF = "Sound.Hommage.Parameter.html#t%3ACheckField"
		      >CheckField</A
		      > c]</TD
		    ><TD CLASS = "rdoc"
		    ></TD
		    ></TR
		  ><TR
		  ><TD CLASS = "decl"
		    ><A NAME = "v%3AOr"
		      ></A
		      ><B
		      >Or</B
		      > [<A HREF = "Sound.Hommage.Parameter.html#t%3ACheckField"
		      >CheckField</A
		      > c]</TD
		    ><TD CLASS = "rdoc"
		    ></TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ></TABLE
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><A NAME = "v%3AupdateField"
	  ></A
	  ><B
	  >updateField</B
	  > :: <A HREF = "Sound.Hommage.Parameter.html#t%3AUpdateField"
	  >UpdateField</A
	  > c -&gt; c -&gt; c</TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><A NAME = "v%3AcheckField"
	  ></A
	  ><B
	  >checkField</B
	  > :: <A HREF = "Sound.Hommage.Parameter.html#t%3ACheckField"
	  >CheckField</A
	  > c -&gt; c -&gt; Bool</TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><A NAME = "v%3AapplyField"
	  ></A
	  ><B
	  >applyField</B
	  > :: [<A HREF = "Sound.Hommage.Parameter.html#t%3AUpdateField"
	  >UpdateField</A
	  > c] -&gt; c -&gt; c</TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><A NAME = "v%3AwithField"
	  ></A
	  ><B
	  >withField</B
	  > :: [<A HREF = "Sound.Hommage.Parameter.html#t%3AUpdateField"
	  >UpdateField</A
	  > a] -&gt; (a -&gt; b) -&gt; a -&gt; b</TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><SPAN CLASS = "keyword"
	  >data</SPAN
	  > <A NAME = "t%3AGroup"
	  ></A
	  ><B
	  >Group</B
	  > c a</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 = "decl"
		    ><A NAME = "v%3AGroup"
		      ></A
		      ><B
		      >Group</B
		      ></TD
		    ><TD CLASS = "rdoc"
		    ></TD
		    ></TR
		  ><TR
		  ><TD CLASS = "body" COLSPAN = "2"
		    ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"
		      ><TR
			><TD CLASS = "decl"
			  ><A NAME = "v%3AisGroup"
			    ></A
			    ><B
			    >isGroup</B
			    > :: (c -&gt; Maybe a)</TD
			  ><TD CLASS = "rdoc"
			  ></TD
			  ></TR
			><TR
			><TD CLASS = "decl"
			  ><A NAME = "v%3AmkGroup"
			    ></A
			    ><B
			    >mkGroup</B
			    > :: (a -&gt; 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"
	><A NAME = "v%3AleftGroup"
	  ></A
	  ><B
	  >leftGroup</B
	  > :: <A HREF = "Sound.Hommage.Parameter.html#t%3AGroup"
	  >Group</A
	  > (Either a b) a</TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><A NAME = "v%3ArightGroup"
	  ></A
	  ><B
	  >rightGroup</B
	  > :: <A HREF = "Sound.Hommage.Parameter.html#t%3AGroup"
	  >Group</A
	  > (Either a b) b</TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><A NAME = "v%3A%3E%3C"
	  ></A
	  ><B
	  >(&gt;&lt;)</B
	  > :: <A HREF = "Sound.Hommage.Parameter.html#t%3AGroup"
	  >Group</A
	  > a b -&gt; <A HREF = "Sound.Hommage.Parameter.html#t%3AGroup"
	  >Group</A
	  > c a -&gt; <A HREF = "Sound.Hommage.Parameter.html#t%3AGroup"
	  >Group</A
	  > c b</TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "section1"
	><A NAME = "2"
	  > Hetero List</A
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><SPAN CLASS = "keyword"
	  >data</SPAN
	  > <A NAME = "t%3ALM"
	  ></A
	  ><B
	  >LM</B
	  > a 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 = "1" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><A NAME = "v%3A%3A%3E%3E"
		      ></A
		      ><B
		      >(:&gt;&gt;)</B
		      > (m a) (b m)</TD
		    ><TD CLASS = "rdoc"
		    ></TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "section4"
	      >Instances</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "body"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    >(<A HREF = "Sound.Hommage.Parameter.html#t%3APushFields"
		      >PushFields</A
		      > b) =&gt; <A HREF = "Sound.Hommage.Parameter.html#t%3APushFields"
		      >PushFields</A
		      > (<A HREF = "Sound.Hommage.Parameter.html#t%3ALM"
		      >LM</A
		      > a b)</TD
		    ></TR
		  ><TR
		  ><TD CLASS = "decl"
		    >(<A HREF = "Sound.Hommage.Parameter.html#t%3APushFields"
		      >PushFields</A
		      > b', <A HREF = "Sound.Hommage.Parameter.html#t%3AToFields"
		      >ToFields</A
		      > b b') =&gt; <A HREF = "Sound.Hommage.Parameter.html#t%3AToFields"
		      >ToFields</A
		      > (a, b) (<A HREF = "Sound.Hommage.Parameter.html#t%3ALM"
		      >LM</A
		      > a b')</TD
		    ></TR
		  ><TR
		  ><TD CLASS = "decl"
		    >(<A HREF = "Sound.Hommage.Parameter.html#t%3APushGroups"
		      >PushGroups</A
		      > b) =&gt; <A HREF = "Sound.Hommage.Parameter.html#t%3APushGroups"
		      >PushGroups</A
		      > (<A HREF = "Sound.Hommage.Parameter.html#t%3ALM"
		      >LM</A
		      > a b)</TD
		    ></TR
		  ><TR
		  ><TD CLASS = "decl"
		    >(<A HREF = "Sound.Hommage.Parameter.html#t%3AToGroups"
		      >ToGroups</A
		      > b b', <A HREF = "Sound.Hommage.Parameter.html#t%3APushGroups"
		      >PushGroups</A
		      > b') =&gt; <A HREF = "Sound.Hommage.Parameter.html#t%3AToGroups"
		      >ToGroups</A
		      > (Either a b) (<A HREF = "Sound.Hommage.Parameter.html#t%3ALM"
		      >LM</A
		      > a b')</TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ></TABLE
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><SPAN CLASS = "keyword"
	  >data</SPAN
	  > <A NAME = "t%3ANilM"
	  ></A
	  ><B
	  >NilM</B
	  > m</TD
	></TR
      ><TR
      ><TD CLASS = "body"
	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
	  ><TR
	    ><TD CLASS = "ndoc"
	      > The correct type is: <TT
		> data NilM (m :: * -&gt; *) = NilM </TT
		> . 
   (But Haddock rejects this definition. GHC will need it)</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "section4"
	      >Constructors</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "body"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><A NAME = "v%3ANilM"
		      ></A
		      ><B
		      >NilM</B
		      ></TD
		    ><TD CLASS = "rdoc"
		    ></TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "section4"
	      >Instances</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "body"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><A HREF = "Sound.Hommage.Parameter.html#t%3APushFields"
		      >PushFields</A
		      > <A HREF = "Sound.Hommage.Parameter.html#t%3ANilM"
		      >NilM</A
		      ></TD
		    ></TR
		  ><TR
		  ><TD CLASS = "decl"
		    ><A HREF = "Sound.Hommage.Parameter.html#t%3AToFields"
		      >ToFields</A
		      > () <A HREF = "Sound.Hommage.Parameter.html#t%3ANilM"
		      >NilM</A
		      ></TD
		    ></TR
		  ><TR
		  ><TD CLASS = "decl"
		    ><A HREF = "Sound.Hommage.Parameter.html#t%3APushGroups"
		      >PushGroups</A
		      > <A HREF = "Sound.Hommage.Parameter.html#t%3ANilM"
		      >NilM</A
		      ></TD
		    ></TR
		  ><TR
		  ><TD CLASS = "decl"
		    ><A HREF = "Sound.Hommage.Parameter.html#t%3AToGroups"
		      >ToGroups</A
		      > () <A HREF = "Sound.Hommage.Parameter.html#t%3ANilM"
		      >NilM</A
		      ></TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ></TABLE
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><SPAN CLASS = "keyword"
	  >class</SPAN
	  > <A NAME = "t%3APushFields"
	  ></A
	  ><B
	  >PushFields</B
	  > m  <SPAN CLASS = "keyword"
	  >where</SPAN
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "body"
	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
	  ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "section4"
	      >Methods</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "body"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><A NAME = "v%3ApushFields"
		      ></A
		      ><B
		      >pushFields</B
		      > :: m (<A HREF = "Sound.Hommage.Parameter.html#t%3AField"
		      >Field</A
		      > c) -&gt; m (<A HREF = "Sound.Hommage.Parameter.html#t%3AField"
		      >Field</A
		      > (x, c))</TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "section4"
	      >Instances</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "body"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><A HREF = "Sound.Hommage.Parameter.html#t%3APushFields"
		      >PushFields</A
		      > <A HREF = "Sound.Hommage.Parameter.html#t%3ANilM"
		      >NilM</A
		      ></TD
		    ></TR
		  ><TR
		  ><TD CLASS = "decl"
		    >(<A HREF = "Sound.Hommage.Parameter.html#t%3APushFields"
		      >PushFields</A
		      > b) =&gt; <A HREF = "Sound.Hommage.Parameter.html#t%3APushFields"
		      >PushFields</A
		      > (<A HREF = "Sound.Hommage.Parameter.html#t%3ALM"
		      >LM</A
		      > a b)</TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ></TABLE
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><SPAN CLASS = "keyword"
	  >class</SPAN
	  > <A NAME = "t%3AToFields"
	  ></A
	  ><B
	  >ToFields</B
	  > a r  <SPAN CLASS = "keyword"
	  >where</SPAN
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "body"
	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
	  ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "section4"
	      >Methods</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "body"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><A NAME = "v%3AtoFields"
		      ></A
		      ><B
		      >toFields</B
		      > :: a -&gt; r (<A HREF = "Sound.Hommage.Parameter.html#t%3AField"
		      >Field</A
		      > a)</TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "section4"
	      >Instances</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "body"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><A HREF = "Sound.Hommage.Parameter.html#t%3AToFields"
		      >ToFields</A
		      > () <A HREF = "Sound.Hommage.Parameter.html#t%3ANilM"
		      >NilM</A
		      ></TD
		    ></TR
		  ><TR
		  ><TD CLASS = "decl"
		    >(<A HREF = "Sound.Hommage.Parameter.html#t%3APushFields"
		      >PushFields</A
		      > b', <A HREF = "Sound.Hommage.Parameter.html#t%3AToFields"
		      >ToFields</A
		      > b b') =&gt; <A HREF = "Sound.Hommage.Parameter.html#t%3AToFields"
		      >ToFields</A
		      > (a, b) (<A HREF = "Sound.Hommage.Parameter.html#t%3ALM"
		      >LM</A
		      > a b')</TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ></TABLE
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><SPAN CLASS = "keyword"
	  >class</SPAN
	  > <A NAME = "t%3APushGroups"
	  ></A
	  ><B
	  >PushGroups</B
	  > m  <SPAN CLASS = "keyword"
	  >where</SPAN
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "body"
	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
	  ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "section4"
	      >Methods</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "body"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><A NAME = "v%3ApushGroups"
		      ></A
		      ><B
		      >pushGroups</B
		      > :: m (<A HREF = "Sound.Hommage.Parameter.html#t%3AGroup"
		      >Group</A
		      > c) -&gt; m (<A HREF = "Sound.Hommage.Parameter.html#t%3AGroup"
		      >Group</A
		      > (Either x c))</TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "section4"
	      >Instances</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "body"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><A HREF = "Sound.Hommage.Parameter.html#t%3APushGroups"
		      >PushGroups</A
		      > <A HREF = "Sound.Hommage.Parameter.html#t%3ANilM"
		      >NilM</A
		      ></TD
		    ></TR
		  ><TR
		  ><TD CLASS = "decl"
		    >(<A HREF = "Sound.Hommage.Parameter.html#t%3APushGroups"
		      >PushGroups</A
		      > b) =&gt; <A HREF = "Sound.Hommage.Parameter.html#t%3APushGroups"
		      >PushGroups</A
		      > (<A HREF = "Sound.Hommage.Parameter.html#t%3ALM"
		      >LM</A
		      > a b)</TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ></TABLE
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><SPAN CLASS = "keyword"
	  >class</SPAN
	  > <A NAME = "t%3AToGroups"
	  ></A
	  ><B
	  >ToGroups</B
	  > a r  <SPAN CLASS = "keyword"
	  >where</SPAN
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "body"
	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
	  ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "section4"
	      >Methods</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "body"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><A NAME = "v%3AtoGroups"
		      ></A
		      ><B
		      >toGroups</B
		      > :: a -&gt; r (<A HREF = "Sound.Hommage.Parameter.html#t%3AGroup"
		      >Group</A
		      > a)</TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "section4"
	      >Instances</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "body"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><A HREF = "Sound.Hommage.Parameter.html#t%3AToGroups"
		      >ToGroups</A
		      > () <A HREF = "Sound.Hommage.Parameter.html#t%3ANilM"
		      >NilM</A
		      ></TD
		    ></TR
		  ><TR
		  ><TD CLASS = "decl"
		    >(<A HREF = "Sound.Hommage.Parameter.html#t%3AToGroups"
		      >ToGroups</A
		      > b b', <A HREF = "Sound.Hommage.Parameter.html#t%3APushGroups"
		      >PushGroups</A
		      > b') =&gt; <A HREF = "Sound.Hommage.Parameter.html#t%3AToGroups"
		      >ToGroups</A
		      > (Either a b) (<A HREF = "Sound.Hommage.Parameter.html#t%3ALM"
		      >LM</A
		      > a b')</TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ></TABLE
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "botbar"
	>Produced by <A HREF = "http://www.haskell.org/haddock/"
	  >Haddock</A
	  > version HADDOCK_VERSION</TD
	></TR
      ></TABLE
    ></BODY
  ></HTML
>