hobbits-1.0: dist/doc/html/hobbits/Data-Binding-Hobbits-SuperComb.html
<!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.Binding.Hobbits.SuperComb</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_Data-Binding-Hobbits-SuperComb.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hobbits-1.0: A library for canonically representing terms with binding</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Portability</th><td>GHC</td></tr><tr><th>Stability</th><td>experimental</td></tr><tr><th>Maintainer</th><td>emw4@rice.edu</td></tr></table><p class="caption">Data.Binding.Hobbits.SuperComb</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#1">Abstract types
</a></li><li><a href="#2">Operators involving <code><a href="Data-Binding-Hobbits-SuperComb.html#t:SuperComb">SuperComb</a></code>
</a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>This module uses Template Haskell to distinguish super-combinators, so that
the library can trust such functions to not contain any <code>Name</code> values in
their closure.
</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"><span class="keyword">data</span> <a href="#t:SuperComb">SuperComb</a> a</li><li class="src short"><a href="#v:superComb">superComb</a> :: <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0/Language-Haskell-TH-Syntax.html#t:Q">Q</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0/Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> -> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0/Language-Haskell-TH-Syntax.html#t:Q">Q</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0/Language-Haskell-TH-Syntax.html#t:Exp">Exp</a></li><li class="src short"><a href="#v:mbToplevel">mbToplevel</a> :: <a href="Data-Binding-Hobbits-SuperComb.html#t:SuperComb">SuperComb</a> (a -> b) -> <a href="Data-Binding-Hobbits-Internal.html#t:Mb">Mb</a> ctx a -> <a href="Data-Binding-Hobbits-Internal.html#t:Mb">Mb</a> ctx b</li></ul></div><div id="interface"><h1 id="1">Abstract types
</h1><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:SuperComb" class="def">SuperComb</a> a </p><div class="doc"><p>The type <code>SuperComb a</code> represents a super-combinator of type <code>a</code>,
i.e., an expression of type <code>a</code> with no free (Haskell) variables.
Since this cannot be checked directly in the Haskell type system,
the <code>SuperComb</code> data type is hidden, and the user can only create
super-combinators using Template Haskell, through the <code><a href="Data-Binding-Hobbits-SuperComb.html#v:superComb">superComb</a></code>
operator.
</p></div></div><h1 id="2">Operators involving <code><a href="Data-Binding-Hobbits-SuperComb.html#t:SuperComb">SuperComb</a></code>
</h1><div class="top"><p class="src"><a name="v:superComb" class="def">superComb</a> :: <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0/Language-Haskell-TH-Syntax.html#t:Q">Q</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0/Language-Haskell-TH-Syntax.html#t:Exp">Exp</a> -> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0/Language-Haskell-TH-Syntax.html#t:Q">Q</a> <a href="/Library/Frameworks/GHC.framework/Versions/7.0.1-i386/usr/share/doc/ghc/html/libraries/template-haskell-2.5.0.0/Language-Haskell-TH-Syntax.html#t:Exp">Exp</a></p><div class="doc"><p><code>superComb</code> is used with Template Haskell to create super-combinators;
see documentation for <code><a href="Data-Binding-Hobbits-SuperComb.html#v:mbToplevel">mbToplevel</a></code> to see how it is used.
</p></div></div><div class="top"><p class="src"><a name="v:mbToplevel" class="def">mbToplevel</a> :: <a href="Data-Binding-Hobbits-SuperComb.html#t:SuperComb">SuperComb</a> (a -> b) -> <a href="Data-Binding-Hobbits-Internal.html#t:Mb">Mb</a> ctx a -> <a href="Data-Binding-Hobbits-Internal.html#t:Mb">Mb</a> ctx b</p><div class="doc"><p><code>mbToplevel</code> <code>f</code> <code>b</code> applies super-combinator <code>f</code> to the body of
multi-binding <code>b</code>. For example:
</p><pre> mbToplevel $(superComb [| f |]) (nu $ \n -> n) = nu f
</pre></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.8.0</p></div></body></html>