mirror of
https://github.com/tensorflow/haskell.git
synced 2024-11-30 06:49:44 +01:00
11 lines
65 KiB
HTML
11 lines
65 KiB
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" /><meta name="viewport" content="width=device-width, initial-scale=1" /><title>TensorFlow.Build</title><link href="linuwial.css" rel="stylesheet" type="text/css" title="Linuwial" /><link rel="stylesheet" type="text/css" href="quick-jump.css" /><link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=PT+Sans:400,400i,700" /><script src="haddock-bundle.min.js" async="async" type="text/javascript"></script><script type="text/x-mathjax-config">MathJax.Hub.Config({ tex2jax: { processClass: "mathjax", ignoreClass: ".*" } });</script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script></head><body><div id="package-header"><span class="caption">tensorflow-0.3.0.0: TensorFlow bindings.</span><ul class="links" id="page-menu"><li><a href="src/TensorFlow.Build.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">TensorFlow.Build</p></div><div id="table-of-contents"><div id="contents-list"><p class="caption" onclick="window.scrollTo(0,0)">Contents</p><ul><li><a href="#g:1">Graph node types</a></li><li><a href="#g:2">Ops</a></li><li><a href="#g:3">The Build monad</a></li><li><a href="#g:4">Creating and looking up Ops</a></li><li><a href="#g:5">Modifying all nodes in a Build action</a></li></ul></div></div><div id="synopsis"><details id="syn"><summary>Synopsis</summary><ul class="details-toggle" data-details-id="syn"><li class="src short"><span class="keyword">newtype</span> <a href="#t:ControlNode">ControlNode</a> = <a href="#v:ControlNode">ControlNode</a> {<ul class="subs"><li><a href="#v:unControlNode">unControlNode</a> :: <a href="TensorFlow-Output.html#t:NodeName" title="TensorFlow.Output">NodeName</a></li></ul>}</li><li class="src short"><span class="keyword">data</span> <a href="#t:Unique">Unique</a></li><li class="src short"><a href="#v:explicitName">explicitName</a> :: <a href="../text-1.2.4.0/Data-Text.html#t:Text" title="Data.Text">Text</a> -> <a href="TensorFlow-Output.html#t:PendingNodeName" title="TensorFlow.Output">PendingNodeName</a></li><li class="src short"><a href="#v:implicitName">implicitName</a> :: <a href="TensorFlow-Output.html#t:PendingNodeName" title="TensorFlow.Output">PendingNodeName</a></li><li class="src short"><a href="#v:opDef">opDef</a> :: <a href="TensorFlow-Output.html#t:OpType" title="TensorFlow.Output">OpType</a> -> <a href="TensorFlow-Output.html#t:OpDef" title="TensorFlow.Output">OpDef</a></li><li class="src short"><a href="#v:opDefWithName">opDefWithName</a> :: <a href="TensorFlow-Output.html#t:PendingNodeName" title="TensorFlow.Output">PendingNodeName</a> -> <a href="TensorFlow-Output.html#t:OpType" title="TensorFlow.Output">OpType</a> -> <a href="TensorFlow-Output.html#t:OpDef" title="TensorFlow.Output">OpDef</a></li><li class="src short"><a href="#v:opName">opName</a> :: Lens' <a href="TensorFlow-Output.html#t:OpDef" title="TensorFlow.Output">OpDef</a> <a href="TensorFlow-Output.html#t:PendingNodeName" title="TensorFlow.Output">PendingNodeName</a></li><li class="src short"><a href="#v:opType">opType</a> :: Lens' <a href="TensorFlow-Output.html#t:OpDef" title="TensorFlow.Output">OpDef</a> <a href="TensorFlow-Output.html#t:OpType" title="TensorFlow.Output">OpType</a></li><li class="src short"><a href="#v:opAttr">opAttr</a> :: <a href="TensorFlow-Types.html#t:Attribute" title="TensorFlow.Types">Attribute</a> a => <a href="../text-1.2.4.0/Data-Text.html#t:Text" title="Data.Text">Text</a> -> Lens' <a href="TensorFlow-Output.html#t:OpDef" title="TensorFlow.Output">OpDef</a> a</li><li class="src sho
|
||
|
valuable for causing side effects when they are run.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:ControlNode" class="def">ControlNode</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:unControlNode" class="def">unControlNode</a> :: <a href="TensorFlow-Output.html#t:NodeName" title="TensorFlow.Output">NodeName</a></dfn><div class="doc empty"> </div></li></ul></div></td></tr></table></div><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:ControlNode">Instances</h4><details id="i:ControlNode" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:ControlNode:Nodes:1"></span> <a href="TensorFlow-Nodes.html#t:Nodes" title="TensorFlow.Nodes">Nodes</a> <a href="TensorFlow-Build.html#t:ControlNode" title="TensorFlow.Build">ControlNode</a></span> <a href="src/TensorFlow.Nodes.html#line-97" class="link">Source</a> <a href="#t:Nodes" class="selflink">#</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><details id="i:id:ControlNode:Nodes:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="TensorFlow-Nodes.html">TensorFlow.Nodes</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:getNodes">getNodes</a> :: <a href="TensorFlow-Build.html#t:ControlNode" title="TensorFlow.Build">ControlNode</a> -> <a href="TensorFlow-Build.html#t:Build" title="TensorFlow.Build">Build</a> (<a href="../containers-0.6.2.1/Data-Set.html#t:Set" title="Data.Set">Set</a> <a href="TensorFlow-Output.html#t:NodeName" title="TensorFlow.Output">NodeName</a>) <a href="src/TensorFlow.Nodes.html#getNodes" class="link">Source</a> <a href="#v:getNodes" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:ControlNode:BuildResult:2"></span> <a href="TensorFlow-BuildOp.html#t:BuildResult" title="TensorFlow.BuildOp">BuildResult</a> <a href="TensorFlow-Build.html#t:ControlNode" title="TensorFlow.Build">ControlNode</a></span> <a href="src/TensorFlow.BuildOp.html#line-132" class="link">Source</a> <a href="#t:BuildResult" class="selflink">#</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><details id="i:id:ControlNode:BuildResult:2"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="TensorFlow-BuildOp.html">TensorFlow.BuildOp</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:buildResult">buildResult</a> :: Result <a href="TensorFlow-Build.html#t:ControlNode" title="TensorFlow.Build">ControlNode</a> <a href="src/TensorFlow.BuildOp.html#buildResult" class="link">Source</a> <a href="#v:buildResult" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:ControlNode:Fetchable:3"></span> a ~ () => <a href="TensorFlow-Nodes.html#t:Fetchable" title="TensorFlow.Nodes">Fetchable</a> <a href="TensorFlow-Build.html#t:ControlNode" title="TensorFlow.Build">ControlNode</a> a</span> <a href="src/TensorFlow.Nodes.html#line-104" class="link">Source</a> <a href="#t:Fetchable" class="selflink">#</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><details id="i:id:ControlNode:Fetchable:3"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="TensorFlow-Nodes.html">TensorFlow.Nodes</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:getFetch">getFetch</a> :: <a href="TensorFlow-Build.html#t:ControlNode" title="TensorFlow.Build">ControlNode</a> -> <a href="TensorFlow-B
|
||
|
Used to manage build state internally as part of the <code>Session</code> monad.</p></div><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:BuildT">Instances</h4><details id="i:BuildT" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:BuildT:MonadTrans:1"></span> <a href="../transformers-0.5.6.2/Control-Monad-Trans-Class.html#t:MonadTrans" title="Control.Monad.Trans.Class">MonadTrans</a> <a href="TensorFlow-Build.html#t:BuildT" title="TensorFlow.Build">BuildT</a></span> <a href="src/TensorFlow.Build.html#line-191" class="link">Source</a> <a href="#t:BuildT" class="selflink">#</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><details id="i:id:BuildT:MonadTrans:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="TensorFlow-Build.html">TensorFlow.Build</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:lift">lift</a> :: <a href="../base-4.13.0.0/Control-Monad.html#t:Monad" title="Control.Monad">Monad</a> m => m a -> <a href="TensorFlow-Build.html#t:BuildT" title="TensorFlow.Build">BuildT</a> m a <a href="#v:lift" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:BuildT:TensorKind:2"></span> <a href="TensorFlow-Tensor.html#t:TensorKind" title="TensorFlow.Tensor">TensorKind</a> <a href="TensorFlow-Build.html#t:Build" title="TensorFlow.Build">Build</a></span> <a href="src/TensorFlow.Tensor.html#line-191" class="link">Source</a> <a href="#t:TensorKind" class="selflink">#</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><details id="i:id:BuildT:TensorKind:2"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="TensorFlow-Tensor.html">TensorFlow.Tensor</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:toBuild">toBuild</a> :: <a href="TensorFlow-Build.html#t:Build" title="TensorFlow.Build">Build</a> a -> <a href="TensorFlow-Build.html#t:Build" title="TensorFlow.Build">Build</a> a <a href="src/TensorFlow.Tensor.html#toBuild" class="link">Source</a> <a href="#v:toBuild" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:BuildT:MonadState:3"></span> <a href="../base-4.13.0.0/Control-Monad.html#t:Monad" title="Control.Monad">Monad</a> m => <a href="../mtl-2.2.2/Control-Monad-State-Class.html#t:MonadState" title="Control.Monad.State.Class">MonadState</a> <a href="TensorFlow-Build.html#t:GraphState" title="TensorFlow.Build">GraphState</a> (<a href="TensorFlow-Build.html#t:BuildT" title="TensorFlow.Build">BuildT</a> m)</span> <a href="src/TensorFlow.Build.html#line-192" class="link">Source</a> <a href="#t:BuildT" class="selflink">#</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><details id="i:id:BuildT:MonadState:3"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="TensorFlow-Build.html">TensorFlow.Build</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:get">get</a> :: <a href="TensorFlow-Build.html#t:BuildT" title="TensorFlow.Build">BuildT</a> m <a href="TensorFlow-Build.html#t:GraphState" title="TensorFlow.Build">GraphState</a> <a href="#v:get" class="selflink">#</a></p><p class="src"><a href="#v:put">put</a> :: <a href="TensorFlow-Build.html#t:GraphState" title="TensorFlow.Build">GraphState</a> -> <a href="TensorFlow-Build.html#t:BuildT" title="TensorFlow.Build">BuildT</a> m () <a href="#v:put" class="selflink">#</a></p><p class="src"><a href="#v:state">state</a> :: (<a href="TensorFlow-Build.html#t:GraphState" title="TensorFlow.Build">GraphState<
|
||
|
<code><a href="TensorFlow-Session.html#v:run" title="TensorFlow.Session">run</a></code>.</p></div></div><div class="top"><p class="src"><a id="v:hoistBuildT" class="def">hoistBuildT</a> :: (<span class="keyword">forall</span> a. m a -> n a) -> <a href="TensorFlow-Build.html#t:BuildT" title="TensorFlow.Build">BuildT</a> m b -> <a href="TensorFlow-Build.html#t:BuildT" title="TensorFlow.Build">BuildT</a> n b <a href="src/TensorFlow.Build.html#hoistBuildT" class="link">Source</a> <a href="#v:hoistBuildT" class="selflink">#</a></p><div class="doc"><p>This is Control.Monad.Morph.hoist sans the dependency.</p></div></div><div class="top"><p class="src"><a id="v:evalBuildT" class="def">evalBuildT</a> :: <a href="../base-4.13.0.0/Control-Monad.html#t:Monad" title="Control.Monad">Monad</a> m => <a href="TensorFlow-Build.html#t:BuildT" title="TensorFlow.Build">BuildT</a> m a -> m a <a href="src/TensorFlow.Build.html#evalBuildT" class="link">Source</a> <a href="#v:evalBuildT" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:runBuildT" class="def">runBuildT</a> :: <a href="TensorFlow-Build.html#t:BuildT" title="TensorFlow.Build">BuildT</a> m a -> m (a, <a href="TensorFlow-Build.html#t:GraphState" title="TensorFlow.Build">GraphState</a>) <a href="src/TensorFlow.Build.html#runBuildT" class="link">Source</a> <a href="#v:runBuildT" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:asGraphDef" class="def">asGraphDef</a> :: <a href="TensorFlow-Build.html#t:Build" title="TensorFlow.Build">Build</a> a -> <a href="../tensorflow-proto-0.3.0.0/Proto-Tensorflow-Core-Framework-Graph.html#t:GraphDef" title="Proto.Tensorflow.Core.Framework.Graph">GraphDef</a> <a href="src/TensorFlow.Build.html#asGraphDef" class="link">Source</a> <a href="#v:asGraphDef" class="selflink">#</a></p><div class="doc"><p>Produce a GraphDef proto representation of the nodes that are rendered in
|
||
|
the given <code><a href="TensorFlow-Build.html#t:Build" title="TensorFlow.Build">Build</a></code> action.</p></div></div><div class="top"><p class="src"><a id="v:addGraphDef" class="def">addGraphDef</a> :: <a href="TensorFlow-Build.html#t:MonadBuild" title="TensorFlow.Build">MonadBuild</a> m => <a href="../tensorflow-proto-0.3.0.0/Proto-Tensorflow-Core-Framework-Graph.html#t:GraphDef" title="Proto.Tensorflow.Core.Framework.Graph">GraphDef</a> -> m () <a href="src/TensorFlow.Build.html#addGraphDef" class="link">Source</a> <a href="#v:addGraphDef" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:flushInitializers" class="def">flushInitializers</a> :: <a href="../base-4.13.0.0/Control-Monad.html#t:Monad" title="Control.Monad">Monad</a> m => <a href="TensorFlow-Build.html#t:BuildT" title="TensorFlow.Build">BuildT</a> m [<a href="TensorFlow-Output.html#t:NodeName" title="TensorFlow.Output">NodeName</a>] <a href="src/TensorFlow.Build.html#flushInitializers" class="link">Source</a> <a href="#v:flushInitializers" class="selflink">#</a></p><div class="doc"><p>Get all the initializers that have accumulated so far, and clear
|
||
|
that buffer.</p></div></div><div class="top"><p class="src"><a id="v:flushNodeBuffer" class="def">flushNodeBuffer</a> :: <a href="TensorFlow-Build.html#t:MonadBuild" title="TensorFlow.Build">MonadBuild</a> m => m [<a href="../tensorflow-proto-0.3.0.0/Proto-Tensorflow-Core-Framework-NodeDef.html#t:NodeDef" title="Proto.Tensorflow.Core.Framework.NodeDef">NodeDef</a>] <a href="src/TensorFlow.Build.html#flushNodeBuffer" class="link">Source</a> <a href="#v:flushNodeBuffer" class="selflink">#</a></p><div class="doc"><p>Get all the NodeDefs that have accumulated so far, and clear that buffer.</p></div></div><div class="top"><p class="src"><a id="v:summaries" class="def">summaries</a> :: Lens' <a href="TensorFlow-Build.html#t:GraphState" title="TensorFlow.Build">GraphState</a> [<a href="TensorFlow-Output.html#t:Output" title="TensorFlow.Output">Output</a>] <a href="src/TensorFlow.Build.html#summaries" class="link">Source</a> <a href="#v:summaries" class="selflink">#</a></p></div><a href="#g:4" id="g:4"><h1>Creating and looking up Ops</h1></a><div class="top"><p class="src"><a id="v:getOrAddOp" class="def">getOrAddOp</a> :: <a href="TensorFlow-Output.html#t:OpDef" title="TensorFlow.Output">OpDef</a> -> <a href="TensorFlow-Build.html#t:Build" title="TensorFlow.Build">Build</a> <a href="TensorFlow-Output.html#t:NodeName" title="TensorFlow.Output">NodeName</a> <a href="src/TensorFlow.Build.html#getOrAddOp" class="link">Source</a> <a href="#v:getOrAddOp" class="selflink">#</a></p><div class="doc"><p>Render the given op if it hasn't been rendered already, and return its
|
||
|
name.</p></div></div><div class="top"><p class="src"><a id="v:addNewOp" class="def">addNewOp</a> :: <a href="TensorFlow-Output.html#t:OpDef" title="TensorFlow.Output">OpDef</a> -> <a href="TensorFlow-Build.html#t:Build" title="TensorFlow.Build">Build</a> <a href="TensorFlow-Output.html#t:NodeName" title="TensorFlow.Output">NodeName</a> <a href="src/TensorFlow.Build.html#addNewOp" class="link">Source</a> <a href="#v:addNewOp" class="selflink">#</a></p><div class="doc"><p>Add a new node for a given <code><a href="TensorFlow-Output.html#t:OpDef" title="TensorFlow.Output">OpDef</a></code>. This is used for making "stateful" ops
|
||
|
which are not safe to dedup (e.g, "variable" and "assign").</p></div></div><div class="top"><p class="src"><a id="v:encodeOutput" class="def">encodeOutput</a> :: <a href="TensorFlow-Output.html#t:Output" title="TensorFlow.Output">Output</a> -> <a href="../text-1.2.4.0/Data-Text.html#t:Text" title="Data.Text">Text</a> <a href="src/TensorFlow.Build.html#encodeOutput" class="link">Source</a> <a href="#v:encodeOutput" class="selflink">#</a></p><div class="doc"><p>Turn an <code><a href="TensorFlow-Output.html#t:Output" title="TensorFlow.Output">Output</a></code> into a string representation for the TensorFlow
|
||
|
foreign APIs.</p></div></div><div class="top"><p class="src"><a id="v:lookupNode" class="def">lookupNode</a> :: <a href="TensorFlow-Output.html#t:NodeName" title="TensorFlow.Output">NodeName</a> -> <a href="TensorFlow-Build.html#t:Build" title="TensorFlow.Build">Build</a> <a href="../tensorflow-proto-0.3.0.0/Proto-Tensorflow-Core-Framework-NodeDef.html#t:NodeDef" title="Proto.Tensorflow.Core.Framework.NodeDef">NodeDef</a> <a href="src/TensorFlow.Build.html#lookupNode" class="link">Source</a> <a href="#v:lookupNode" class="selflink">#</a></p></div><a href="#g:5" id="g:5"><h1>Modifying all nodes in a Build action</h1></a><div class="top"><p class="src"><a id="v:withStateLens" class="def">withStateLens</a> :: <a href="TensorFlow-Build.html#t:MonadBuild" title="TensorFlow.Build">MonadBuild</a> m => Lens' <a href="TensorFlow-Build.html#t:GraphState" title="TensorFlow.Build">GraphState</a> a -> (a -> a) -> m b -> m b <a href="src/TensorFlow.Build.html#withStateLens" class="link">Source</a> <a href="#v:withStateLens" class="selflink">#</a></p><div class="doc"><p>Modify some part of the state, run an action, and restore the state
|
||
|
after that action is done.</p></div></div><div class="top"><p class="src"><a id="v:withDevice" class="def">withDevice</a> :: <a href="TensorFlow-Build.html#t:MonadBuild" title="TensorFlow.Build">MonadBuild</a> m => <a href="../base-4.13.0.0/Data-Maybe.html#t:Maybe" title="Data.Maybe">Maybe</a> <a href="TensorFlow-Output.html#t:Device" title="TensorFlow.Output">Device</a> -> m a -> m a <a href="src/TensorFlow.Build.html#withDevice" class="link">Source</a> <a href="#v:withDevice" class="selflink">#</a></p><div class="doc"><p>Set a device for all nodes rendered in the given <code><a href="TensorFlow-Build.html#t:Build" title="TensorFlow.Build">Build</a></code> action
|
||
|
(unless further overridden by another use of withDevice).</p></div></div><div class="top"><p class="src"><a id="v:withNameScope" class="def">withNameScope</a> :: <a href="TensorFlow-Build.html#t:MonadBuild" title="TensorFlow.Build">MonadBuild</a> m => <a href="../text-1.2.4.0/Data-Text.html#t:Text" title="Data.Text">Text</a> -> m a -> m a <a href="src/TensorFlow.Build.html#withNameScope" class="link">Source</a> <a href="#v:withNameScope" class="selflink">#</a></p><div class="doc"><p>Prepend a scope to all nodes rendered in the given <code><a href="TensorFlow-Build.html#t:Build" title="TensorFlow.Build">Build</a></code> action.</p></div></div><div class="top"><p class="src"><a id="v:withNodeDependencies" class="def">withNodeDependencies</a> :: <a href="TensorFlow-Build.html#t:MonadBuild" title="TensorFlow.Build">MonadBuild</a> m => <a href="../containers-0.6.2.1/Data-Set.html#t:Set" title="Data.Set">Set</a> <a href="TensorFlow-Output.html#t:NodeName" title="TensorFlow.Output">NodeName</a> -> m a -> m a <a href="src/TensorFlow.Build.html#withNodeDependencies" class="link">Source</a> <a href="#v:withNodeDependencies" class="selflink">#</a></p><div class="doc"><p>Add control inputs to all nodes rendered in the given <code><a href="TensorFlow-Build.html#t:Build" title="TensorFlow.Build">Build</a></code> action.</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.23.0</p></div></body></html>
|