Sophie

Sophie

distrib > Fedora > 13 > i386 > media > updates > by-pkgid > 38b71240f9c32f98c1535b26e6e8c67f > files > 2

ghc-dlist-doc-0.5-3.fc13.i686.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--Rendered using the Haskell Html Library v0.2-->
<HTML
><HEAD
><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
><TITLE
>Data.DList</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-DList.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"
>dlist-0.5: Differences lists</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.DList</FONT
></TD
><TD ALIGN="right"
><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="infohead"
>Portability</TD
><TD CLASS="infoval"
>portable (Haskell 98)</TD
></TR
><TR
><TD CLASS="infohead"
>Stability</TD
><TD CLASS="infoval"
>experimental</TD
></TR
><TR
><TD CLASS="infohead"
>Maintainer</TD
><TD CLASS="infoval"
>dons@cse.unsw.edu.au</TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="section4"
><B
>Contents</B
></TD
></TR
><TR
><TD
><DL
><DT
><A HREF="#1"
>Construction
</A
></DT
><DT
><A HREF="#2"
>Basic functions
</A
></DT
><DT
><A HREF="#3"
>MonadPlus
</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"
>Difference lists: a data structure for O(1) append on lists.
</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"
>newtype</SPAN
>  <A HREF="#t%3ADList"
>DList</A
> a = <A HREF="#v%3ADL"
>DL</A
> {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="recfield"
><A HREF="#v%3AunDL"
>unDL</A
> :: [a] -&gt; [a]</TD
></TR
></TABLE
>}</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AfromList"
>fromList</A
> ::  [a] -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AtoList"
>toList</A
> ::  <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a -&gt; [a]</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Aempty"
>empty</A
> ::  <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Asingleton"
>singleton</A
> ::  a -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Acons"
>cons</A
> ::  a -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Asnoc"
>snoc</A
> ::  <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a -&gt; a -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Aappend"
>append</A
> ::  <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Aconcat"
>concat</A
> ::  [<A HREF="Data-DList.html#t%3ADList"
>DList</A
> a] -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Areplicate"
>replicate</A
> ::  Int -&gt; a -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Alist"
>list</A
> ::  b -&gt; (a -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a -&gt; b) -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a -&gt; b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Ahead"
>head</A
> ::  <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a -&gt; a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Atail"
>tail</A
> ::  <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Aunfoldr"
>unfoldr</A
> ::  (b -&gt; Maybe (a, b)) -&gt; b -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Afoldr"
>foldr</A
> ::  (a -&gt; b -&gt; b) -&gt; b -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a -&gt; b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Amap"
>map</A
> ::  (a -&gt; b) -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmaybeReturn"
>maybeReturn</A
> :: MonadPlus m =&gt; Maybe a -&gt; m a</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"
><SPAN CLASS="keyword"
>newtype</SPAN
>  <A NAME="t:DList"
><A NAME="t%3ADList"
></A
></A
><B
>DList</B
> a </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
><P
>A difference list is a function that given a list, returns the
 original contents of the difference list prepended at the given list
</P
><P
>This structure supports <EM
>O(1)</EM
> append and snoc operations on lists,
 making it very useful for append-heavy uses, such as logging and
 pretty printing.
</P
><P
>For example, using DList as the state type when printing a tree with
 the Writer monad
</P
><PRE
> import Control.Monad.Writer
 import Data.DList
 
 data Tree a = Leaf a | Branch (Tree a) (Tree a)

 flatten_writer :: Tree x -&gt; DList x
 flatten_writer = snd . runWriter . flatten
     where
       flatten (Leaf x)     = tell (singleton x)
       flatten (Branch x y) = flatten x &gt;&gt; flatten y
</PRE
></TD
></TR
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:DL"
><A NAME="v%3ADL"
></A
></A
><B
>DL</B
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="body" COLSPAN="2"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:unDL"
><A NAME="v%3AunDL"
></A
></A
><B
>unDL</B
> :: [a] -&gt; [a]</TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:DList')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:DList" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
>Monad <A HREF="Data-DList.html#t%3ADList"
>DList</A
></TD
></TR
><TR
><TD CLASS="decl"
>Functor <A HREF="Data-DList.html#t%3ADList"
>DList</A
></TD
></TR
><TR
><TD CLASS="decl"
>MonadPlus <A HREF="Data-DList.html#t%3ADList"
>DList</A
></TD
></TR
><TR
><TD CLASS="decl"
>Applicative <A HREF="Data-DList.html#t%3ADList"
>DList</A
></TD
></TR
><TR
><TD CLASS="decl"
>Monoid (<A HREF="Data-DList.html#t%3ADList"
>DList</A
> a)</TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="1"
><A NAME="1"
>Construction
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:fromList"
><A NAME="v%3AfromList"
></A
></A
><B
>fromList</B
> ::  [a] -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a</TD
></TR
><TR
><TD CLASS="doc"
>Converting a normal list to a dlist
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:toList"
><A NAME="v%3AtoList"
></A
></A
><B
>toList</B
> ::  <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a -&gt; [a]</TD
></TR
><TR
><TD CLASS="doc"
>Converting a dlist back to a normal list
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="2"
><A NAME="2"
>Basic functions
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:empty"
><A NAME="v%3Aempty"
></A
></A
><B
>empty</B
> ::  <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a</TD
></TR
><TR
><TD CLASS="doc"
>Create a difference list containing no elements
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:singleton"
><A NAME="v%3Asingleton"
></A
></A
><B
>singleton</B
> ::  a -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a</TD
></TR
><TR
><TD CLASS="doc"
>Create difference list with given single element
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:cons"
><A NAME="v%3Acons"
></A
></A
><B
>cons</B
> ::  a -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a</TD
></TR
><TR
><TD CLASS="doc"
><EM
>O(1)</EM
>, Prepend a single element to a difference list
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:snoc"
><A NAME="v%3Asnoc"
></A
></A
><B
>snoc</B
> ::  <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a -&gt; a -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a</TD
></TR
><TR
><TD CLASS="doc"
><EM
>O(1)</EM
>, Append a single element at a difference list
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:append"
><A NAME="v%3Aappend"
></A
></A
><B
>append</B
> ::  <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a</TD
></TR
><TR
><TD CLASS="doc"
><EM
>O(1)</EM
>, Appending difference lists
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:concat"
><A NAME="v%3Aconcat"
></A
></A
><B
>concat</B
> ::  [<A HREF="Data-DList.html#t%3ADList"
>DList</A
> a] -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a</TD
></TR
><TR
><TD CLASS="doc"
><EM
>O(spine)</EM
>, Concatenate difference lists
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:replicate"
><A NAME="v%3Areplicate"
></A
></A
><B
>replicate</B
> ::  Int -&gt; a -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a</TD
></TR
><TR
><TD CLASS="doc"
><EM
>O(n)</EM
>, Create a difference list of the given number of elements
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:list"
><A NAME="v%3Alist"
></A
></A
><B
>list</B
> ::  b -&gt; (a -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a -&gt; b) -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a -&gt; b</TD
></TR
><TR
><TD CLASS="doc"
><EM
>O(length dl)</EM
>, List elimination, head, tail.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:head"
><A NAME="v%3Ahead"
></A
></A
><B
>head</B
> ::  <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a -&gt; a</TD
></TR
><TR
><TD CLASS="doc"
>Return the head of the list
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:tail"
><A NAME="v%3Atail"
></A
></A
><B
>tail</B
> ::  <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a</TD
></TR
><TR
><TD CLASS="doc"
>Return the tail of the list
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:unfoldr"
><A NAME="v%3Aunfoldr"
></A
></A
><B
>unfoldr</B
> ::  (b -&gt; Maybe (a, b)) -&gt; b -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a</TD
></TR
><TR
><TD CLASS="doc"
>Unfoldr for difference lists
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:foldr"
><A NAME="v%3Afoldr"
></A
></A
><B
>foldr</B
> ::  (a -&gt; b -&gt; b) -&gt; b -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a -&gt; b</TD
></TR
><TR
><TD CLASS="doc"
>Foldr over difference lists
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:map"
><A NAME="v%3Amap"
></A
></A
><B
>map</B
> ::  (a -&gt; b) -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> a -&gt; <A HREF="Data-DList.html#t%3ADList"
>DList</A
> b</TD
></TR
><TR
><TD CLASS="doc"
>Map over difference lists.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="3"
><A NAME="3"
>MonadPlus
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:maybeReturn"
><A NAME="v%3AmaybeReturn"
></A
></A
><B
>maybeReturn</B
> :: MonadPlus m =&gt; Maybe a -&gt; m a</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="botbar"
>Produced by <A HREF="http://www.haskell.org/haddock/"
>Haddock</A
> version 2.6.0</TD
></TR
></TABLE
></BODY
></HTML
>