Sophie

Sophie

distrib > Fedora > 16 > i386 > by-pkgid > 420a649e6f65db30aa7451f64d08ff92 > files > 688

ghc-xmonad-contrib-devel-0.9.2-4.fc16.i686.rpm

<!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>XMonad.Layout.SubLayouts</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_XMonad-Layout-SubLayouts.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/XMonad-Layout-SubLayouts.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">xmonad-contrib-0.9.2: Third party extensions for xmonad</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Portability</th><td>unportable</td></tr><tr><th>Stability</th><td>unstable</td></tr><tr><th>Maintainer</th><td>vogt.adam@gmail.com</td></tr></table><p class="caption">XMonad.Layout.SubLayouts</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Usage
</a></li><li><a href="#g:2">Screenshots
</a></li><li><a href="#g:3">Todo
</a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>A layout combinator that allows layouts to be nested.
</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:subLayout">subLayout</a> ::  [<a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a>] -&gt; subl a -&gt; l a -&gt; <a href="XMonad-Layout-LayoutModifier.html#t:ModifiedLayout">ModifiedLayout</a> (Sublayout subl) l a</li><li class="src short"><a href="#v:subTabbed">subTabbed</a> :: (<a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> a, <a href="XMonad-Layout-LayoutModifier.html#t:LayoutModifier">LayoutModifier</a> (Sublayout <a href="XMonad-Layout-Simplest.html#t:Simplest">Simplest</a>) a, LayoutClass l a) =&gt; l a -&gt; <a href="XMonad-Layout-LayoutModifier.html#t:ModifiedLayout">ModifiedLayout</a> (<a href="XMonad-Layout-Decoration.html#t:Decoration">Decoration</a> <a href="XMonad-Layout-Tabbed.html#t:TabbedDecoration">TabbedDecoration</a> <a href="XMonad-Layout-Decoration.html#t:DefaultShrinker">DefaultShrinker</a>) (<a href="XMonad-Layout-LayoutModifier.html#t:ModifiedLayout">ModifiedLayout</a> (Sublayout <a href="XMonad-Layout-Simplest.html#t:Simplest">Simplest</a>) l) a</li><li class="src short"><a href="#v:pushGroup">pushGroup</a> :: <a href="XMonad-Util-Types.html#t:Direction2D">Direction2D</a> -&gt; <a href="XMonad-Layout-WindowNavigation.html#t:Navigate">Navigate</a></li><li class="src short"><a href="#v:pullGroup">pullGroup</a> :: <a href="XMonad-Util-Types.html#t:Direction2D">Direction2D</a> -&gt; <a href="XMonad-Layout-WindowNavigation.html#t:Navigate">Navigate</a></li><li class="src short"><a href="#v:pushWindow">pushWindow</a> :: <a href="XMonad-Util-Types.html#t:Direction2D">Direction2D</a> -&gt; <a href="XMonad-Layout-WindowNavigation.html#t:Navigate">Navigate</a></li><li class="src short"><a href="#v:pullWindow">pullWindow</a> :: <a href="XMonad-Util-Types.html#t:Direction2D">Direction2D</a> -&gt; <a href="XMonad-Layout-WindowNavigation.html#t:Navigate">Navigate</a></li><li class="src short"><a href="#v:onGroup">onGroup</a> :: (Stack <a href="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t:Window">Window</a> -&gt; Stack <a href="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t:Window">Window</a>) -&gt; X <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t:-40--41-">()</a></li><li class="src short"><a href="#v:toSubl">toSubl</a> :: Message a =&gt; a -&gt; X <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t:-40--41-">()</a></li><li class="src short"><a href="#v:mergeDir">mergeDir</a> :: (Stack <a href="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t:Window">Window</a> -&gt; Stack <a href="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t:Window">Window</a>) -&gt; <a href="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t:Window">Window</a> -&gt; <a href="XMonad-Layout-SubLayouts.html#t:GroupMsg">GroupMsg</a> <a href="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t:Window">Window</a></li><li class="src short"><span class="keyword">data</span>  <a href="#t:GroupMsg">GroupMsg</a> a<ul class="subs"><li>= <a href="#v:UnMerge">UnMerge</a> a  </li><li>| <a href="#v:UnMergeAll">UnMergeAll</a> a  </li><li>| <a href="#v:Merge">Merge</a> a a  </li><li>| <a href="#v:MergeAll">MergeAll</a> a  </li><li>| <a href="#v:Migrate">Migrate</a> a a  </li><li>| <a href="#v:WithGroup">WithGroup</a> (Stack a -&gt; X (Stack a)) a  </li><li>| <a href="#v:SubMessage">SubMessage</a> SomeMessage a  </li></ul></li><li class="src short"><span class="keyword">data</span>  <a href="#t:Broadcast">Broadcast</a>  = <a href="#v:Broadcast">Broadcast</a> SomeMessage</li><li class="src short"><a href="#v:defaultSublMap">defaultSublMap</a> ::  XConfig l -&gt; <a href="/usr/share/doc/ghc/html/libraries/containers-0.4.0.0/Data-Map.html#t:Map">Map</a> (<a href="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t:KeyMask">KeyMask</a>, <a href="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t:KeySym">KeySym</a>) (X <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t:-40--41-">()</a>)</li></ul></div><div id="interface"><h1 id="g:1">Usage
</h1><div class="doc"><p>You can use this module with the following in your <code>~/.xmonad/xmonad.hs</code>:
</p><pre> import XMonad.Layout.SubLayouts
 import XMonad.Layout.WindowNavigation
</pre><p>Using <a href="XMonad-Layout-BoringWindows.html">XMonad.Layout.BoringWindows</a> is optional and it allows you to add a
 keybinding to skip over the non-visible windows.
</p><pre> import XMonad.Layout.BoringWindows
</pre><p>Then edit your <code>layoutHook</code> by adding the <code><a href="XMonad-Layout-SubLayouts.html#v:subTabbed">subTabbed</a></code> layout modifier:
</p><pre> myLayout = windowNavigation $ subTabbed $ boringWindows $
                        Tall 1 (3/100) (1/2) ||| etc..
 main = xmonad defaultConfig { layoutHook = myLayout }
</pre><p><a href="XMonad-Layout-WindowNavigation.html">XMonad.Layout.WindowNavigation</a> is used to specify which windows to merge,
 and it is not integrated into the modifier because it can be configured, and
 works best as the outer modifier.
</p><p>Then to your keybindings add:
</p><pre> , ((modm .|. controlMask, xK_h), sendMessage $ pullGroup L)
 , ((modm .|. controlMask, xK_l), sendMessage $ pullGroup R)
 , ((modm .|. controlMask, xK_k), sendMessage $ pullGroup U)
 , ((modm .|. controlMask, xK_j), sendMessage $ pullGroup D)

 , ((modm .|. controlMask, xK_m), withFocused (sendMessage . MergeAll))
 , ((modm .|. controlMask, xK_u), withFocused (sendMessage . UnMerge))

 , ((modm .|. controlMask, xK_period), onGroup W.focusUp')
 , ((modm .|. controlMask, xK_comma), onGroup W.focusDown')
</pre><p>These additional keybindings require the optional
  <a href="XMonad-Layout-BoringWindows.html">XMonad.Layout.BoringWindows</a> layoutModifier. The focus will skip over the
  windows that are not focused in each sublayout.
</p><pre> , ((modm, xK_j), focusDown)
 , ((modm, xK_k), focusUp)
</pre><p>A <code>submap</code> can be used to make modifying the sublayouts using <code><a href="XMonad-Layout-SubLayouts.html#v:onGroup">onGroup</a></code> and
  <code><a href="XMonad-Layout-SubLayouts.html#v:toSubl">toSubl</a></code> simpler:
</p><pre> ,((modm, xK_s), submap $ defaultSublMap conf)
</pre><p><em>NOTE:</em> is there some reason that <code>asks config &gt;&gt;= submap . defaultSublMap</code>
  could not be used in the keybinding instead? It avoids having to explicitly
  pass the conf.
</p><p>For more detailed instructions, see:
</p><p><a href="XMonad-Doc-Extending.html#Editing_the_layout_hook">XMonad.Doc.Extending</a>
 <a href="XMonad-Doc-Extending.html#Adding_key_bindings">XMonad.Doc.Extending</a>
</p></div><div class="top"><p class="src"><a name="v:subLayout" class="def">subLayout</a> ::  [<a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a>] -&gt; subl a -&gt; l a -&gt; <a href="XMonad-Layout-LayoutModifier.html#t:ModifiedLayout">ModifiedLayout</a> (Sublayout subl) l a<a href="src/XMonad-Layout-SubLayouts.html#subLayout" class="link">Source</a></p><div class="doc"><p>The main layout modifier arguments:
</p><pre>subLayout advanceInnerLayouts innerLayout outerLayout</pre><dl><dt><code>advanceInnerLayouts</code></dt><dd> When a new group at index <code>n</code> in the outer layout
  is created (even with one element), the <code>innerLayout</code> is used as the
  layout within that group after being advanced with <code>advanceInnerLayouts !!
  n</code> <code>NextLayout</code> messages. If there is no corresponding element in the
  <code>advanceInnerLayouts</code> list, then <code>innerLayout</code> is not given any <code>NextLayout</code>
  messages.
</dd><dt><code>innerLayout</code></dt><dd> The single layout given to be run as a sublayout.
</dd><dt><code>outerLayout</code></dt><dd> The layout that determines the rectangles given to each
  group.
</dd></dl><p>Ex. The second group is <code>Tall</code>, the third is <code>Circle</code>, all others are tabbed
  with:
</p><pre> myLayout = addTabs shrinkText defaultTheme
          $ subLayout [0,1,2] (Simplest ||| Tall 1 0.2 0.5 ||| Circle)
          $ Tall 1 0.2 0.5 ||| Full
</pre></div></div><div class="top"><p class="src"><a name="v:subTabbed" class="def">subTabbed</a> :: (<a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Eq.html#t:Eq">Eq</a> a, <a href="XMonad-Layout-LayoutModifier.html#t:LayoutModifier">LayoutModifier</a> (Sublayout <a href="XMonad-Layout-Simplest.html#t:Simplest">Simplest</a>) a, LayoutClass l a) =&gt; l a -&gt; <a href="XMonad-Layout-LayoutModifier.html#t:ModifiedLayout">ModifiedLayout</a> (<a href="XMonad-Layout-Decoration.html#t:Decoration">Decoration</a> <a href="XMonad-Layout-Tabbed.html#t:TabbedDecoration">TabbedDecoration</a> <a href="XMonad-Layout-Decoration.html#t:DefaultShrinker">DefaultShrinker</a>) (<a href="XMonad-Layout-LayoutModifier.html#t:ModifiedLayout">ModifiedLayout</a> (Sublayout <a href="XMonad-Layout-Simplest.html#t:Simplest">Simplest</a>) l) a<a href="src/XMonad-Layout-SubLayouts.html#subTabbed" class="link">Source</a></p><div class="doc"><p><code>subTabbed</code> is a use of <code><a href="XMonad-Layout-SubLayouts.html#v:subLayout">subLayout</a></code> with <code><a href="XMonad-Layout-Tabbed.html#v:addTabs">addTabs</a></code> to show decorations.
</p></div></div><div class="top"><p class="src"><a name="v:pushGroup" class="def">pushGroup</a> :: <a href="XMonad-Util-Types.html#t:Direction2D">Direction2D</a> -&gt; <a href="XMonad-Layout-WindowNavigation.html#t:Navigate">Navigate</a><a href="src/XMonad-Layout-SubLayouts.html#pushGroup" class="link">Source</a></p><div class="doc"><p><code>pullGroup</code>, <code>pushGroup</code> allow you to merge windows or groups inheriting
 the position of the current window (pull) or the other window (push).
</p><p><code>pushWindow</code> and <code>pullWindow</code> move individual windows between groups. They
 are less effective at preserving window positions.
</p></div></div><div class="top"><p class="src"><a name="v:pullGroup" class="def">pullGroup</a> :: <a href="XMonad-Util-Types.html#t:Direction2D">Direction2D</a> -&gt; <a href="XMonad-Layout-WindowNavigation.html#t:Navigate">Navigate</a><a href="src/XMonad-Layout-SubLayouts.html#pullGroup" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:pushWindow" class="def">pushWindow</a> :: <a href="XMonad-Util-Types.html#t:Direction2D">Direction2D</a> -&gt; <a href="XMonad-Layout-WindowNavigation.html#t:Navigate">Navigate</a><a href="src/XMonad-Layout-SubLayouts.html#pushWindow" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:pullWindow" class="def">pullWindow</a> :: <a href="XMonad-Util-Types.html#t:Direction2D">Direction2D</a> -&gt; <a href="XMonad-Layout-WindowNavigation.html#t:Navigate">Navigate</a><a href="src/XMonad-Layout-SubLayouts.html#pullWindow" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:onGroup" class="def">onGroup</a> :: (Stack <a href="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t:Window">Window</a> -&gt; Stack <a href="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t:Window">Window</a>) -&gt; X <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t:-40--41-">()</a><a href="src/XMonad-Layout-SubLayouts.html#onGroup" class="link">Source</a></p><div class="doc"><p>Apply a function on the stack belonging to the currently focused group. It
 works for rearranging windows and for changing focus.
</p></div></div><div class="top"><p class="src"><a name="v:toSubl" class="def">toSubl</a> :: Message a =&gt; a -&gt; X <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t:-40--41-">()</a><a href="src/XMonad-Layout-SubLayouts.html#toSubl" class="link">Source</a></p><div class="doc"><p>Send a message to the currently focused sublayout.
</p></div></div><div class="top"><p class="src"><a name="v:mergeDir" class="def">mergeDir</a> :: (Stack <a href="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t:Window">Window</a> -&gt; Stack <a href="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t:Window">Window</a>) -&gt; <a href="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t:Window">Window</a> -&gt; <a href="XMonad-Layout-SubLayouts.html#t:GroupMsg">GroupMsg</a> <a href="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t:Window">Window</a><a href="src/XMonad-Layout-SubLayouts.html#mergeDir" class="link">Source</a></p><div class="doc"><p>merge the window that would be focused by the function when applied to the
 W.Stack of all windows, with the current group removed. The given window
 should be focused by a sublayout. Example usage: <code>withFocused (sendMessage .
 mergeDir W.focusDown')</code>
</p></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:GroupMsg" class="def">GroupMsg</a> a <a href="src/XMonad-Layout-SubLayouts.html#GroupMsg" class="link">Source</a></p><div class="doc"><p>GroupMsg take window parameters to determine which group the action should
 be applied to
</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:UnMerge" class="def">UnMerge</a> a</td><td class="doc"><p>free the focused window from its tab stack
</p></td></tr><tr><td class="src"><a name="v:UnMergeAll" class="def">UnMergeAll</a> a</td><td class="doc"><p>separate the focused group into singleton groups
</p></td></tr><tr><td class="src"><a name="v:Merge" class="def">Merge</a> a a</td><td class="doc"><p>merge the first group into the second group
</p></td></tr><tr><td class="src"><a name="v:MergeAll" class="def">MergeAll</a> a</td><td class="doc"><p>make one large group, keeping the parameter focused
</p></td></tr><tr><td class="src"><a name="v:Migrate" class="def">Migrate</a> a a</td><td class="doc"><p>used to the window named in the first argument to the
 second argument's group, this may be replaced by a
 combination of <code><a href="XMonad-Layout-SubLayouts.html#v:UnMerge">UnMerge</a></code> and <code><a href="XMonad-Layout-SubLayouts.html#v:Merge">Merge</a></code>
</p></td></tr><tr><td class="src"><a name="v:WithGroup" class="def">WithGroup</a> (Stack a -&gt; X (Stack a)) a</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:SubMessage" class="def">SubMessage</a> SomeMessage a</td><td class="doc"><p>the sublayout with the given window will get the message
</p></td></tr></table></div><div class="subs instances"><p id="control.i:GroupMsg" class="caption collapser" onclick="toggleSection('i:GroupMsg')">Instances</p><div id="section.i:GroupMsg" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Typeable.html#t:Typeable1">Typeable1</a> <a href="XMonad-Layout-SubLayouts.html#t:GroupMsg">GroupMsg</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> a =&gt; Message (<a href="XMonad-Layout-SubLayouts.html#t:GroupMsg">GroupMsg</a> a)</td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Broadcast" class="def">Broadcast</a>  <a href="src/XMonad-Layout-SubLayouts.html#Broadcast" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Broadcast" class="def">Broadcast</a> SomeMessage</td><td class="doc"><p>send a message to all sublayouts
</p></td></tr></table></div><div class="subs instances"><p id="control.i:Broadcast" class="caption collapser" onclick="toggleSection('i:Broadcast')">Instances</p><div id="section.i:Broadcast" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="XMonad-Layout-SubLayouts.html#t:Broadcast">Broadcast</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">Message <a href="XMonad-Layout-SubLayouts.html#t:Broadcast">Broadcast</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:defaultSublMap" class="def">defaultSublMap</a> ::  XConfig l -&gt; <a href="/usr/share/doc/ghc/html/libraries/containers-0.4.0.0/Data-Map.html#t:Map">Map</a> (<a href="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t:KeyMask">KeyMask</a>, <a href="/usr/share/doc/ghc/html/libraries/X11-1.5.0.0/Graphics-X11-Types.html#t:KeySym">KeySym</a>) (X <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t:-40--41-">()</a>)<a href="src/XMonad-Layout-SubLayouts.html#defaultSublMap" class="link">Source</a></p><div class="doc"><p><code>defaultSublMap</code> is an attempt to create a set of keybindings like the
 defaults ones but to be used as a <code>submap</code> for sending messages to the
 sublayout.
</p></div></div><h1 id="g:2">Screenshots
</h1><div class="doc"><p><img src="http://haskell.org/sitewiki/images/thumb/8/8b/Xmonad-SubLayouts-xinerama.png/480px-Xmonad-SubLayouts-xinerama.png" />
</p><p>Larger version: <a href="http://haskell.org/sitewiki/images/8/8b/Xmonad-SubLayouts-xinerama.png">http://haskell.org/sitewiki/images/8/8b/Xmonad-SubLayouts-xinerama.png</a>
</p></div><h1 id="g:3">Todo
</h1><div class="doc"><p><em>Issue 288</em>
</p><p><a href="XMonad-Layout-ResizableTile.html">XMonad.Layout.ResizableTile</a> assumes that its environment
  contains only the windows it is running: sublayouts are currently run with
  the stack containing only the windows passed to it in its environment, but
  any changes that the layout makes are not merged back.
</p><p>Should the behavior be made optional?
</p><p><em>Features</em>
</p><ul><li> suggested managehooks for merging specific windows, or the apropriate
     layout based hack to find out the number of groups currently showed, but
     the size of current window groups is not available (outside of this
     growing module)
</li></ul><p><em>SimpleTabbed as a SubLayout</em>
</p><p><code><a href="XMonad-Layout-SubLayouts.html#v:subTabbed">subTabbed</a></code> works well, but it would be more uniform to avoid the use of
  addTabs, with the sublayout being Simplest (but
  <code>XMonad.Layout.Tabbed.simpleTabbed</code> is this...).  The only thing to be
  gained by fixing this issue is the ability to mix and match decoration
  styles. Better compatibility with some other layouts of which I am not
  aware could be another benefit.
</p><p><code>simpleTabbed</code> (and other decorated layouts) fail horribly when used as
  subLayouts:
</p><ul><li> decorations stick around: layout is run after being told to Hide
</li><li> mouse events do not change focus: the group-ungroup does not respect
      the focus changes it wants?
</li><li> sending ReleaseResources before running it makes xmonad very slow, and
      still leaves borders sticking around
</li></ul></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.9.2</p></div></body></html>