1
0
mirror of https://github.com/tensorflow/haskell.git synced 2024-06-29 16:08:34 +02:00
tensorflow-haskell/docs/haddock/tensorflow-0.2.0.0/src/TensorFlow.Nodes.html
2018-08-13 21:05:49 -07:00

147 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><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">-- Copyright 2016 TensorFlow authors.</span><span>
</span><a name="line-2"></a><span class="hs-comment">--</span><span>
</span><a name="line-3"></a><span class="hs-comment">-- Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span><span>
</span><a name="line-4"></a><span class="hs-comment">-- you may not use this file except in compliance with the License.</span><span>
</span><a name="line-5"></a><span class="hs-comment">-- You may obtain a copy of the License at</span><span>
</span><a name="line-6"></a><span class="hs-comment">--</span><span>
</span><a name="line-7"></a><span class="hs-comment">-- http://www.apache.org/licenses/LICENSE-2.0</span><span>
</span><a name="line-8"></a><span class="hs-comment">--</span><span>
</span><a name="line-9"></a><span class="hs-comment">-- Unless required by applicable law or agreed to in writing, software</span><span>
</span><a name="line-10"></a><span class="hs-comment">-- distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span><span>
</span><a name="line-11"></a><span class="hs-comment">-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span>
</span><a name="line-12"></a><span class="hs-comment">-- See the License for the specific language governing permissions and</span><span>
</span><a name="line-13"></a><span class="hs-comment">-- limitations under the License.</span><span>
</span><a name="line-14"></a><span>
</span><a name="line-15"></a><span class="hs-pragma">{-# LANGUAGE DataKinds #-}</span><span>
</span><a name="line-16"></a><span class="hs-pragma">{-# LANGUAGE FlexibleContexts #-}</span><span>
</span><a name="line-17"></a><span class="hs-pragma">{-# LANGUAGE FlexibleInstances #-}</span><span>
</span><a name="line-18"></a><span class="hs-pragma">{-# LANGUAGE MultiParamTypeClasses #-}</span><span>
</span><a name="line-19"></a><span class="hs-pragma">{-# LANGUAGE RankNTypes #-}</span><span>
</span><a name="line-20"></a><span class="hs-pragma">{-# LANGUAGE ScopedTypeVariables #-}</span><span>
</span><a name="line-21"></a><span class="hs-pragma">{-# LANGUAGE TypeFamilies #-}</span><span>
</span><a name="line-22"></a><span class="hs-pragma">{-# LANGUAGE TypeOperators #-}</span><span>
</span><a name="line-23"></a><span class="hs-pragma">{-# LANGUAGE UndecidableInstances #-}</span><span> </span><span class="hs-comment">-- For Fetchable (TensorExpr a)</span><span>
</span><a name="line-24"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">TensorFlow</span><span class="hs-operator">.</span><span class="hs-identifier">Nodes</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-25"></a><span>
</span><a name="line-26"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control</span><span class="hs-operator">.</span><span class="hs-identifier">Applicative</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">liftA2</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-var">liftA3</span><span class="hs-special">)</span><span>
</span><a name="line-27"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data</span><span class="hs-operator">.</span><span class="hs-identifier">Functor</span><span class="hs-operator">.</span><span class="hs-identifier">Identity</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Identity</span><span class="hs-special">)</span><span>
</span><a name="line-28"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data</span><span class="hs-operator">.</span><span class="hs-identifier">Map</span><span class="hs-operator">.</span><span class="hs-identifier">Strict</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Map</span><span class="hs-special">)</span><span>
</span><a name="line-29"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data</span><span class="hs-operator">.</span><span class="hs-identifier">Monoid</span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="hs-operator hs-var">&lt;&gt;</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-30"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data</span><span class="hs-operator">.</span><span class="hs-identifier">Set</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Set</span><span class="hs-special">)</span><span>
</span><a name="line-31"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data</span><span class="hs-operator">.</span><span class="hs-identifier">Text</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Text</span><span class="hs-special">)</span><span>
</span><a name="line-32"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-identifier">Data</span><span class="hs-operator">.</span><span class="hs-identifier">Map</span><span class="hs-operator">.</span><span class="hs-identifier">Strict</span><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">Map</span><span>
</span><a name="line-33"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-identifier">Data</span><span class="hs-operator">.</span><span class="hs-identifier">Set</span><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">Set</span><span>
</span><a name="line-34"></a><span>
</span><a name="line-35"></a><span class="hs-keyword">import</span><span> </span><a href="TensorFlow.Build.html"><span class="hs-identifier">TensorFlow</span><span class="hs-operator">.</span><span class="hs-identifier">Build</span></a><span>
</span><a name="line-36"></a><span class="hs-keyword">import</span><span> </span><a href="TensorFlow.Output.html"><span class="hs-identifier">TensorFlow</span><span class="hs-operator">.</span><span class="hs-identifier">Output</span></a><span>
</span><a name="line-37"></a><span class="hs-keyword">import</span><span> </span><a href="TensorFlow.Tensor.html"><span class="hs-identifier">TensorFlow</span><span class="hs-operator">.</span><span class="hs-identifier">Tensor</span></a><span>
</span><a name="line-38"></a><span class="hs-keyword">import</span><span> </span><a href="TensorFlow.Types.html"><span class="hs-identifier">TensorFlow</span><span class="hs-operator">.</span><span class="hs-identifier">Types</span></a><span>
</span><a name="line-39"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><a href="TensorFlow.Internal.FFI.html"><span class="hs-identifier">TensorFlow</span><span class="hs-operator">.</span><span class="hs-identifier">Internal</span><span class="hs-operator">.</span><span class="hs-identifier">FFI</span></a><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">FFI</span><span>
</span><a name="line-40"></a><span>
</span><a name="line-41"></a><span class="hs-comment">-- | Types that contain ops which can be run.</span><span>
</span><a name="line-42"></a><span class="hs-keyword">class</span><span> </span><a name="Nodes"><a href="TensorFlow.Nodes.html#Nodes"><span class="hs-identifier">Nodes</span></a></a><span> </span><a name="local-6989586621679121004"><a href="#local-6989586621679121004"><span class="hs-identifier">t</span></a></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-43"></a><span> </span><span class="hs-identifier">getNodes</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="#local-6989586621679121004"><span class="hs-identifier hs-type">t</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="TensorFlow.Build.html#Build"><span class="hs-identifier hs-type">Build</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Set</span><span> </span><a href="TensorFlow.Output.html#NodeName"><span class="hs-identifier hs-type">NodeName</span></a><span class="hs-special">)</span><span>
</span><a name="line-44"></a><span>
</span><a name="line-45"></a><span class="hs-comment">-- | Types that tensor representations (e.g. 'Tensor', 'ControlNode') can be</span><span>
</span><a name="line-46"></a><span class="hs-comment">-- fetched into.</span><span>
</span><a name="line-47"></a><span class="hs-comment">--</span><span>
</span><a name="line-48"></a><span class="hs-comment">-- Includes collections of tensors (e.g. tuples).</span><span>
</span><a name="line-49"></a><span class="hs-keyword">class</span><span> </span><a href="TensorFlow.Nodes.html#Nodes"><span class="hs-identifier hs-type">Nodes</span></a><span> </span><a href="#local-6989586621679121002"><span class="hs-identifier hs-type">t</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a name="Fetchable"><a href="TensorFlow.Nodes.html#Fetchable"><span class="hs-identifier">Fetchable</span></a></a><span> </span><a name="local-6989586621679121002"><a href="#local-6989586621679121002"><span class="hs-identifier">t</span></a></a><span> </span><a name="local-6989586621679121003"><a href="#local-6989586621679121003"><span class="hs-identifier">a</span></a></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-50"></a><span> </span><span class="hs-identifier">getFetch</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="#local-6989586621679121002"><span class="hs-identifier hs-type">t</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="TensorFlow.Build.html#Build"><span class="hs-identifier hs-type">Build</span></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Nodes.html#Fetch"><span class="hs-identifier hs-type">Fetch</span></a><span> </span><a href="#local-6989586621679121003"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span>
</span><a name="line-51"></a><span>
</span><a name="line-52"></a><span class="hs-comment">-- | Fetch action. Keeps track of what needs to be fetched and how to decode</span><span>
</span><a name="line-53"></a><span class="hs-comment">-- the fetched data.</span><span>
</span><a name="line-54"></a><span class="hs-keyword">data</span><span> </span><a name="Fetch"><a href="TensorFlow.Nodes.html#Fetch"><span class="hs-identifier">Fetch</span></a></a><span> </span><a name="local-6989586621679121001"><a href="#local-6989586621679121001"><span class="hs-identifier">a</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a name="Fetch"><a href="TensorFlow.Nodes.html#Fetch"><span class="hs-identifier">Fetch</span></a></a><span>
</span><a name="line-55"></a><span> </span><span class="hs-special">{</span><span> </span><span class="hs-comment">-- | Nodes to fetch</span><span>
</span><a name="line-56"></a><span> </span><a name="fetches"><a href="TensorFlow.Nodes.html#fetches"><span class="hs-identifier">fetches</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Set</span><span> </span><span class="hs-identifier hs-type">Text</span><span>
</span><a name="line-57"></a><span> </span><span class="hs-comment">-- | Function to create an 'a' from the fetched data.</span><span>
</span><a name="line-58"></a><span> </span><span class="hs-special">,</span><span> </span><a name="fetchRestore"><a href="TensorFlow.Nodes.html#fetchRestore"><span class="hs-identifier">fetchRestore</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Map</span><span> </span><span class="hs-identifier hs-type">Text</span><span> </span><a href="TensorFlow.Internal.FFI.html#TensorData"><span class="hs-identifier hs-type">FFI</span><span class="hs-operator hs-type">.</span><span class="hs-identifier hs-type">TensorData</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679121001"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-59"></a><span> </span><span class="hs-special">}</span><span>
</span><a name="line-60"></a><span>
</span><a name="line-61"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-identifier hs-type">Functor</span><span> </span><a href="TensorFlow.Nodes.html#Fetch"><span class="hs-identifier hs-type">Fetch</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-62"></a><span> </span><a name="local-3458764513820541101"><span class="hs-identifier">fmap</span></a><span> </span><a name="local-6989586621679121073"><a href="#local-6989586621679121073"><span class="hs-identifier">f</span></a></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Nodes.html#Fetch"><span class="hs-identifier hs-var">Fetch</span></a><span> </span><a name="local-6989586621679121074"><a href="#local-6989586621679121074"><span class="hs-identifier">fetch</span></a></a><span> </span><a name="local-6989586621679121075"><a href="#local-6989586621679121075"><span class="hs-identifier">restore</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Nodes.html#Fetch"><span class="hs-identifier hs-var">Fetch</span></a><span> </span><a href="#local-6989586621679121074"><span class="hs-identifier hs-var">fetch</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679121073"><span class="hs-identifier hs-var">f</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="#local-6989586621679121075"><span class="hs-identifier hs-var">restore</span></a><span class="hs-special">)</span><span>
</span><a name="line-63"></a><span>
</span><a name="line-64"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-identifier hs-type">Applicative</span><span> </span><a href="TensorFlow.Nodes.html#Fetch"><span class="hs-identifier hs-type">Fetch</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-65"></a><span> </span><a name="local-3458764513820541680"><span class="hs-identifier">pure</span></a><span> </span><a name="local-6989586621679121068"><a href="#local-6989586621679121068"><span class="hs-identifier">x</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Nodes.html#Fetch"><span class="hs-identifier hs-var">Fetch</span></a><span> </span><span class="hs-identifier hs-var">Set</span><span class="hs-operator hs-var">.</span><span class="hs-identifier hs-var">empty</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">const</span><span> </span><a href="#local-6989586621679121068"><span class="hs-identifier hs-var">x</span></a><span class="hs-special">)</span><span>
</span><a name="line-66"></a><span> </span><a href="TensorFlow.Nodes.html#Fetch"><span class="hs-identifier hs-var">Fetch</span></a><span> </span><a name="local-6989586621679121069"><a href="#local-6989586621679121069"><span class="hs-identifier">fetch</span></a></a><span> </span><a name="local-6989586621679121070"><a href="#local-6989586621679121070"><span class="hs-identifier">restore</span></a></a><span> </span><a name="local-3458764513820541679"><span class="hs-operator">&lt;*&gt;</span></a><span> </span><a href="TensorFlow.Nodes.html#Fetch"><span class="hs-identifier hs-var">Fetch</span></a><span> </span><a name="local-6989586621679121071"><a href="#local-6989586621679121071"><span class="hs-identifier">fetch'</span></a></a><span> </span><a name="local-6989586621679121072"><a href="#local-6989586621679121072"><span class="hs-identifier">restore'</span></a></a><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-67"></a><span> </span><a href="TensorFlow.Nodes.html#Fetch"><span class="hs-identifier hs-var">Fetch</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679121069"><span class="hs-identifier hs-var">fetch</span></a><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><a href="#local-6989586621679121071"><span class="hs-identifier hs-var">fetch'</span></a><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679121070"><span class="hs-identifier hs-var">restore</span></a><span> </span><span class="hs-operator hs-var">&lt;*&gt;</span><span> </span><a href="#local-6989586621679121072"><span class="hs-identifier hs-var">restore'</span></a><span class="hs-special">)</span><span>
</span><a name="line-68"></a><span>
</span><a name="line-69"></a><span class="hs-identifier">nodesUnion</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Monoid</span><span> </span><a href="#local-6989586621679121078"><span class="hs-identifier hs-type">b</span></a><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Traversable</span><span> </span><a href="#local-6989586621679121079"><span class="hs-identifier hs-type">t</span></a><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Applicative</span><span> </span><a href="#local-6989586621679121080"><span class="hs-identifier hs-type">f</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="#local-6989586621679121079"><span class="hs-identifier hs-type">t</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679121080"><span class="hs-identifier hs-type">f</span></a><span> </span><a href="#local-6989586621679121078"><span class="hs-identifier hs-type">b</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679121080"><span class="hs-identifier hs-type">f</span></a><span> </span><a href="#local-6989586621679121078"><span class="hs-identifier hs-type">b</span></a><span>
</span><a name="line-70"></a><a name="nodesUnion"><a href="TensorFlow.Nodes.html#nodesUnion"><span class="hs-identifier">nodesUnion</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">fmap</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">foldMap</span><span> </span><span class="hs-identifier hs-var">id</span><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">sequenceA</span><span>
</span><a name="line-71"></a><span>
</span><a name="line-72"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-special">(</span><a href="TensorFlow.Nodes.html#Nodes"><span class="hs-identifier hs-type">Nodes</span></a><span> </span><a href="#local-6989586621679121064"><span class="hs-identifier hs-type">t1</span></a><span class="hs-special">,</span><span> </span><a href="TensorFlow.Nodes.html#Nodes"><span class="hs-identifier hs-type">Nodes</span></a><span> </span><a href="#local-6989586621679121065"><span class="hs-identifier hs-type">t2</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="TensorFlow.Nodes.html#Nodes"><span class="hs-identifier hs-type">Nodes</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679121064"><span class="hs-identifier hs-type">t1</span></a><span class="hs-special">,</span><span> </span><a href="#local-6989586621679121065"><span class="hs-identifier hs-type">t2</span></a><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-73"></a><span> </span><a name="local-8214565720323895909"><a href="TensorFlow.Nodes.html#getNodes"><span class="hs-identifier">getNodes</span></a></a><span> </span><span class="hs-special">(</span><a name="local-6989586621679121066"><a href="#local-6989586621679121066"><span class="hs-identifier">x</span></a></a><span class="hs-special">,</span><span> </span><a name="local-6989586621679121067"><a href="#local-6989586621679121067"><span class="hs-identifier">y</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Nodes.html#nodesUnion"><span class="hs-identifier hs-var">nodesUnion</span></a><span> </span><span class="hs-special">[</span><a href="TensorFlow.Nodes.html#getNodes"><span class="hs-identifier hs-var">getNodes</span></a><span> </span><a href="#local-6989586621679121066"><span class="hs-identifier hs-var">x</span></a><span class="hs-special">,</span><span> </span><a href="TensorFlow.Nodes.html#getNodes"><span class="hs-identifier hs-var">getNodes</span></a><span> </span><a href="#local-6989586621679121067"><span class="hs-identifier hs-var">y</span></a><span class="hs-special">]</span><span>
</span><a name="line-74"></a><span>
</span><a name="line-75"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-special">(</span><a href="TensorFlow.Nodes.html#Nodes"><span class="hs-identifier hs-type">Nodes</span></a><span> </span><a href="#local-6989586621679121058"><span class="hs-identifier hs-type">t1</span></a><span class="hs-special">,</span><span> </span><a href="TensorFlow.Nodes.html#Nodes"><span class="hs-identifier hs-type">Nodes</span></a><span> </span><a href="#local-6989586621679121059"><span class="hs-identifier hs-type">t2</span></a><span class="hs-special">,</span><span> </span><a href="TensorFlow.Nodes.html#Nodes"><span class="hs-identifier hs-type">Nodes</span></a><span> </span><a href="#local-6989586621679121060"><span class="hs-identifier hs-type">t3</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="TensorFlow.Nodes.html#Nodes"><span class="hs-identifier hs-type">Nodes</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679121058"><span class="hs-identifier hs-type">t1</span></a><span class="hs-special">,</span><span> </span><a href="#local-6989586621679121059"><span class="hs-identifier hs-type">t2</span></a><span class="hs-special">,</span><span> </span><a href="#local-6989586621679121060"><span class="hs-identifier hs-type">t3</span></a><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-76"></a><span> </span><a name="local-8214565720323895909"><a href="TensorFlow.Nodes.html#getNodes"><span class="hs-identifier">getNodes</span></a></a><span> </span><span class="hs-special">(</span><a name="local-6989586621679121061"><a href="#local-6989586621679121061"><span class="hs-identifier">x</span></a></a><span class="hs-special">,</span><span> </span><a name="local-6989586621679121062"><a href="#local-6989586621679121062"><span class="hs-identifier">y</span></a></a><span class="hs-special">,</span><span> </span><a name="local-6989586621679121063"><a href="#local-6989586621679121063"><span class="hs-identifier">z</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Nodes.html#nodesUnion"><span class="hs-identifier hs-var">nodesUnion</span></a><span> </span><span class="hs-special">[</span><a href="TensorFlow.Nodes.html#getNodes"><span class="hs-identifier hs-var">getNodes</span></a><span> </span><a href="#local-6989586621679121061"><span class="hs-identifier hs-var">x</span></a><span class="hs-special">,</span><span> </span><a href="TensorFlow.Nodes.html#getNodes"><span class="hs-identifier hs-var">getNodes</span></a><span> </span><a href="#local-6989586621679121062"><span class="hs-identifier hs-var">y</span></a><span class="hs-special">,</span><span> </span><a href="TensorFlow.Nodes.html#getNodes"><span class="hs-identifier hs-var">getNodes</span></a><span> </span><a href="#local-6989586621679121063"><span class="hs-identifier hs-var">z</span></a><span class="hs-special">]</span><span>
</span><a name="line-77"></a><span>
</span><a name="line-78"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-special">(</span><a href="TensorFlow.Nodes.html#Fetchable"><span class="hs-identifier hs-type">Fetchable</span></a><span> </span><a href="#local-6989586621679121052"><span class="hs-identifier hs-type">t1</span></a><span> </span><a href="#local-6989586621679121053"><span class="hs-identifier hs-type">a1</span></a><span class="hs-special">,</span><span> </span><a href="TensorFlow.Nodes.html#Fetchable"><span class="hs-identifier hs-type">Fetchable</span></a><span> </span><a href="#local-6989586621679121054"><span class="hs-identifier hs-type">t2</span></a><span> </span><a href="#local-6989586621679121055"><span class="hs-identifier hs-type">a2</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="TensorFlow.Nodes.html#Fetchable"><span class="hs-identifier hs-type">Fetchable</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679121052"><span class="hs-identifier hs-type">t1</span></a><span class="hs-special">,</span><span> </span><a href="#local-6989586621679121054"><span class="hs-identifier hs-type">t2</span></a><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679121053"><span class="hs-identifier hs-type">a1</span></a><span class="hs-special">,</span><span> </span><a href="#local-6989586621679121055"><span class="hs-identifier hs-type">a2</span></a><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-79"></a><span> </span><a name="local-8214565720323895907"><a href="TensorFlow.Nodes.html#getFetch"><span class="hs-identifier">getFetch</span></a></a><span> </span><span class="hs-special">(</span><a name="local-6989586621679121056"><a href="#local-6989586621679121056"><span class="hs-identifier">x</span></a></a><span class="hs-special">,</span><span> </span><a name="local-6989586621679121057"><a href="#local-6989586621679121057"><span class="hs-identifier">y</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">liftA2</span><span> </span><span class="hs-special">(</span><span class="hs-special">,</span><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><a href="TensorFlow.Nodes.html#getFetch"><span class="hs-identifier hs-var">getFetch</span></a><span> </span><a href="#local-6989586621679121056"><span class="hs-identifier hs-var">x</span></a><span> </span><span class="hs-operator hs-var">&lt;*&gt;</span><span> </span><a href="TensorFlow.Nodes.html#getFetch"><span class="hs-identifier hs-var">getFetch</span></a><span> </span><a href="#local-6989586621679121057"><span class="hs-identifier hs-var">y</span></a><span>
</span><a name="line-80"></a><span>
</span><a name="line-81"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-special">(</span><a href="TensorFlow.Nodes.html#Fetchable"><span class="hs-identifier hs-type">Fetchable</span></a><span> </span><a href="#local-6989586621679121043"><span class="hs-identifier hs-type">t1</span></a><span> </span><a href="#local-6989586621679121044"><span class="hs-identifier hs-type">a1</span></a><span class="hs-special">,</span><span> </span><a href="TensorFlow.Nodes.html#Fetchable"><span class="hs-identifier hs-type">Fetchable</span></a><span> </span><a href="#local-6989586621679121045"><span class="hs-identifier hs-type">t2</span></a><span> </span><a href="#local-6989586621679121046"><span class="hs-identifier hs-type">a2</span></a><span class="hs-special">,</span><span> </span><a href="TensorFlow.Nodes.html#Fetchable"><span class="hs-identifier hs-type">Fetchable</span></a><span> </span><a href="#local-6989586621679121047"><span class="hs-identifier hs-type">t3</span></a><span> </span><a href="#local-6989586621679121048"><span class="hs-identifier hs-type">a3</span></a><span class="hs-special">)</span><span>
</span><a name="line-82"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="TensorFlow.Nodes.html#Fetchable"><span class="hs-identifier hs-type">Fetchable</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679121043"><span class="hs-identifier hs-type">t1</span></a><span class="hs-special">,</span><span> </span><a href="#local-6989586621679121045"><span class="hs-identifier hs-type">t2</span></a><span class="hs-special">,</span><span> </span><a href="#local-6989586621679121047"><span class="hs-identifier hs-type">t3</span></a><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679121044"><span class="hs-identifier hs-type">a1</span></a><span class="hs-special">,</span><span> </span><a href="#local-6989586621679121046"><span class="hs-identifier hs-type">a2</span></a><span class="hs-special">,</span><span> </span><a href="#local-6989586621679121048"><span class="hs-identifier hs-type">a3</span></a><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-83"></a><span> </span><a name="local-8214565720323895907"><a href="TensorFlow.Nodes.html#getFetch"><span class="hs-identifier">getFetch</span></a></a><span> </span><span class="hs-special">(</span><a name="local-6989586621679121049"><a href="#local-6989586621679121049"><span class="hs-identifier">x</span></a></a><span class="hs-special">,</span><span> </span><a name="local-6989586621679121050"><a href="#local-6989586621679121050"><span class="hs-identifier">y</span></a></a><span class="hs-special">,</span><span> </span><a name="local-6989586621679121051"><a href="#local-6989586621679121051"><span class="hs-identifier">z</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><a name="line-84"></a><span> </span><span class="hs-identifier hs-var">liftA3</span><span> </span><span class="hs-special">(</span><span class="hs-special">,</span><span class="hs-special">,</span><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><a href="TensorFlow.Nodes.html#getFetch"><span class="hs-identifier hs-var">getFetch</span></a><span> </span><a href="#local-6989586621679121049"><span class="hs-identifier hs-var">x</span></a><span> </span><span class="hs-operator hs-var">&lt;*&gt;</span><span> </span><a href="TensorFlow.Nodes.html#getFetch"><span class="hs-identifier hs-var">getFetch</span></a><span> </span><a href="#local-6989586621679121050"><span class="hs-identifier hs-var">y</span></a><span> </span><span class="hs-operator hs-var">&lt;*&gt;</span><span> </span><a href="TensorFlow.Nodes.html#getFetch"><span class="hs-identifier hs-var">getFetch</span></a><span> </span><a href="#local-6989586621679121051"><span class="hs-identifier hs-var">z</span></a><span>
</span><a name="line-85"></a><span>
</span><a name="line-86"></a><span class="hs-keyword">instance</span><span> </span><a href="TensorFlow.Nodes.html#Nodes"><span class="hs-identifier hs-type">Nodes</span></a><span> </span><a href="#local-6989586621679121042"><span class="hs-identifier hs-type">t</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="TensorFlow.Nodes.html#Nodes"><span class="hs-identifier hs-type">Nodes</span></a><span> </span><span class="hs-special">[</span><a href="#local-6989586621679121042"><span class="hs-identifier hs-type">t</span></a><span class="hs-special">]</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-87"></a><span> </span><a name="local-8214565720323895909"><a href="TensorFlow.Nodes.html#getNodes"><span class="hs-identifier">getNodes</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Nodes.html#nodesUnion"><span class="hs-identifier hs-var">nodesUnion</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">map</span><span> </span><a href="TensorFlow.Nodes.html#getNodes"><span class="hs-identifier hs-var">getNodes</span></a><span>
</span><a name="line-88"></a><span>
</span><a name="line-89"></a><span class="hs-keyword">instance</span><span> </span><a href="TensorFlow.Nodes.html#Fetchable"><span class="hs-identifier hs-type">Fetchable</span></a><span> </span><a href="#local-6989586621679121039"><span class="hs-identifier hs-type">t</span></a><span> </span><a href="#local-6989586621679121040"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="TensorFlow.Nodes.html#Fetchable"><span class="hs-identifier hs-type">Fetchable</span></a><span> </span><span class="hs-special">[</span><a href="#local-6989586621679121039"><span class="hs-identifier hs-type">t</span></a><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><a href="#local-6989586621679121040"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">]</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-90"></a><span> </span><a name="local-8214565720323895907"><a href="TensorFlow.Nodes.html#getFetch"><span class="hs-identifier">getFetch</span></a></a><span> </span><a name="local-6989586621679121041"><a href="#local-6989586621679121041"><span class="hs-identifier">ts</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">sequenceA</span><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><span class="hs-identifier hs-var">mapM</span><span> </span><a href="TensorFlow.Nodes.html#getFetch"><span class="hs-identifier hs-var">getFetch</span></a><span> </span><a href="#local-6989586621679121041"><span class="hs-identifier hs-var">ts</span></a><span>
</span><a name="line-91"></a><span>
</span><a name="line-92"></a><span class="hs-keyword">instance</span><span> </span><a href="TensorFlow.Nodes.html#Nodes"><span class="hs-identifier hs-type">Nodes</span></a><span> </span><a href="#local-6989586621679121038"><span class="hs-identifier hs-type">t</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="TensorFlow.Nodes.html#Nodes"><span class="hs-identifier hs-type">Nodes</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Maybe</span><span> </span><a href="#local-6989586621679121038"><span class="hs-identifier hs-type">t</span></a><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-93"></a><span> </span><a name="local-8214565720323895909"><a href="TensorFlow.Nodes.html#getNodes"><span class="hs-identifier">getNodes</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Nodes.html#nodesUnion"><span class="hs-identifier hs-var">nodesUnion</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">fmap</span><span> </span><a href="TensorFlow.Nodes.html#getNodes"><span class="hs-identifier hs-var">getNodes</span></a><span>
</span><a name="line-94"></a><span>
</span><a name="line-95"></a><span class="hs-keyword">instance</span><span> </span><a href="TensorFlow.Nodes.html#Fetchable"><span class="hs-identifier hs-type">Fetchable</span></a><span> </span><a href="#local-6989586621679121036"><span class="hs-identifier hs-type">t</span></a><span> </span><a href="#local-6989586621679121037"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="TensorFlow.Nodes.html#Fetchable"><span class="hs-identifier hs-type">Fetchable</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Maybe</span><span> </span><a href="#local-6989586621679121036"><span class="hs-identifier hs-type">t</span></a><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Maybe</span><span> </span><a href="#local-6989586621679121037"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-96"></a><span> </span><a name="local-8214565720323895907"><a href="TensorFlow.Nodes.html#getFetch"><span class="hs-identifier">getFetch</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">fmap</span><span> </span><span class="hs-identifier hs-var">sequenceA</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">mapM</span><span> </span><a href="TensorFlow.Nodes.html#getFetch"><span class="hs-identifier hs-var">getFetch</span></a><span>
</span><a name="line-97"></a><span>
</span><a name="line-98"></a><span class="hs-keyword">instance</span><span> </span><a href="TensorFlow.Nodes.html#Nodes"><span class="hs-identifier hs-type">Nodes</span></a><span> </span><a href="TensorFlow.Output.html#ControlNode"><span class="hs-identifier hs-type">ControlNode</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-99"></a><span> </span><a name="local-8214565720323895909"><a href="TensorFlow.Nodes.html#getNodes"><span class="hs-identifier">getNodes</span></a></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Output.html#ControlNode"><span class="hs-identifier hs-var">ControlNode</span></a><span> </span><a name="local-6989586621679121035"><a href="#local-6989586621679121035"><span class="hs-identifier">o</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">Set</span><span class="hs-operator hs-var">.</span><span class="hs-identifier hs-var">singleton</span><span> </span><a href="#local-6989586621679121035"><span class="hs-identifier hs-var">o</span></a><span>
</span><a name="line-100"></a><span>
</span><a name="line-101"></a><span class="hs-comment">-- We use the constraint @(a ~ ())@ to help with type inference. For example,</span><span>
</span><a name="line-102"></a><span class="hs-comment">-- if @t :: ControlNode@, then this constraint ensures that @run t :: Session</span><span>
</span><a name="line-103"></a><span class="hs-comment">-- ()@. If we used @instance Fetchable ControlNode ()@ instead, then that</span><span>
</span><a name="line-104"></a><span class="hs-comment">-- expression would be ambiguous without explicitly specifying the return type.</span><span>
</span><a name="line-105"></a><span class="hs-keyword">instance</span><span> </span><a href="#local-6989586621679121034"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">~</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="TensorFlow.Nodes.html#Fetchable"><span class="hs-identifier hs-type">Fetchable</span></a><span> </span><a href="TensorFlow.Output.html#ControlNode"><span class="hs-identifier hs-type">ControlNode</span></a><span> </span><a href="#local-6989586621679121034"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-106"></a><span> </span><a name="local-8214565720323895907"><a href="TensorFlow.Nodes.html#getFetch"><span class="hs-identifier">getFetch</span></a></a><span> </span><span class="hs-identifier">_</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">return</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-107"></a><span>
</span><a name="line-108"></a><span class="hs-keyword">instance</span><span> </span><a href="TensorFlow.Nodes.html#Nodes"><span class="hs-identifier hs-type">Nodes</span></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Types.html#ListOf"><span class="hs-identifier hs-type">ListOf</span></a><span> </span><a href="#local-6989586621679121033"><span class="hs-identifier hs-type">f</span></a><span> </span><span class="hs-special">'</span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-109"></a><span> </span><a name="local-8214565720323895909"><a href="TensorFlow.Nodes.html#getNodes"><span class="hs-identifier">getNodes</span></a></a><span> </span><span class="hs-identifier">_</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">return</span><span> </span><span class="hs-identifier hs-var">Set</span><span class="hs-operator hs-var">.</span><span class="hs-identifier hs-var">empty</span><span>
</span><a name="line-110"></a><span>
</span><a name="line-111"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-special">(</span><a href="TensorFlow.Nodes.html#Nodes"><span class="hs-identifier hs-type">Nodes</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679121028"><span class="hs-identifier hs-type">f</span></a><span> </span><a href="#local-6989586621679121029"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><a href="TensorFlow.Nodes.html#Nodes"><span class="hs-identifier hs-type">Nodes</span></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Types.html#ListOf"><span class="hs-identifier hs-type">ListOf</span></a><span> </span><a href="#local-6989586621679121028"><span class="hs-identifier hs-type">f</span></a><span> </span><span class="hs-keyword">as</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="TensorFlow.Nodes.html#Nodes"><span class="hs-identifier hs-type">Nodes</span></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Types.html#ListOf"><span class="hs-identifier hs-type">ListOf</span></a><span> </span><a href="#local-6989586621679121028"><span class="hs-identifier hs-type">f</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679121029"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-special">'</span><span class="hs-glyph">:</span><span> </span><span class="hs-keyword">as</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-112"></a><span> </span><a name="local-8214565720323895909"><a href="TensorFlow.Nodes.html#getNodes"><span class="hs-identifier">getNodes</span></a></a><span> </span><span class="hs-special">(</span><a name="local-6989586621679121031"><a href="#local-6989586621679121031"><span class="hs-identifier">x</span></a></a><span> </span><a href="TensorFlow.Types.html#%3A%2F"><span class="hs-operator hs-var">:/</span></a><span> </span><a name="local-6989586621679121032"><a href="#local-6989586621679121032"><span class="hs-identifier">xs</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">liftA2</span><span> </span><span class="hs-identifier hs-var">Set</span><span class="hs-operator hs-var">.</span><span class="hs-identifier hs-var">union</span><span> </span><span class="hs-special">(</span><a href="TensorFlow.Nodes.html#getNodes"><span class="hs-identifier hs-var">getNodes</span></a><span> </span><a href="#local-6989586621679121031"><span class="hs-identifier hs-var">x</span></a><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><a href="TensorFlow.Nodes.html#getNodes"><span class="hs-identifier hs-var">getNodes</span></a><span> </span><a href="#local-6989586621679121032"><span class="hs-identifier hs-var">xs</span></a><span class="hs-special">)</span><span>
</span><a name="line-113"></a><span>
</span><a name="line-114"></a><span class="hs-keyword">instance</span><span> </span><a href="#local-6989586621679121026"><span class="hs-identifier hs-type">l</span></a><span> </span><span class="hs-glyph">~</span><span> </span><a href="TensorFlow.Types.html#List"><span class="hs-identifier hs-type">List</span></a><span> </span><span class="hs-special">'</span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="TensorFlow.Nodes.html#Fetchable"><span class="hs-identifier hs-type">Fetchable</span></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Types.html#ListOf"><span class="hs-identifier hs-type">ListOf</span></a><span> </span><a href="#local-6989586621679121027"><span class="hs-identifier hs-type">f</span></a><span> </span><span class="hs-special">'</span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span> </span><a href="#local-6989586621679121026"><span class="hs-identifier hs-type">l</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-115"></a><span> </span><a name="local-8214565720323895907"><a href="TensorFlow.Nodes.html#getFetch"><span class="hs-identifier">getFetch</span></a></a><span> </span><span class="hs-identifier">_</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">return</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><a href="TensorFlow.Types.html#Nil"><span class="hs-identifier hs-var">Nil</span></a><span>
</span><a name="line-116"></a><span>
</span><a name="line-117"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-special">(</span><a href="TensorFlow.Nodes.html#Fetchable"><span class="hs-identifier hs-type">Fetchable</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679121016"><span class="hs-identifier hs-type">f</span></a><span> </span><a href="#local-6989586621679121017"><span class="hs-identifier hs-type">t</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679121018"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">,</span><span> </span><a href="TensorFlow.Nodes.html#Fetchable"><span class="hs-identifier hs-type">Fetchable</span></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Types.html#ListOf"><span class="hs-identifier hs-type">ListOf</span></a><span> </span><a href="#local-6989586621679121016"><span class="hs-identifier hs-type">f</span></a><span> </span><a href="#local-6989586621679121019"><span class="hs-identifier hs-type">ts</span></a><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><a href="TensorFlow.Types.html#List"><span class="hs-identifier hs-type">List</span></a><span> </span><span class="hs-keyword">as</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><a href="#local-6989586621679121021"><span class="hs-identifier hs-type">i</span></a><span> </span><span class="hs-glyph">~</span><span> </span><span class="hs-identifier hs-type">Identity</span><span class="hs-special">)</span><span>
</span><a name="line-118"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="TensorFlow.Nodes.html#Fetchable"><span class="hs-identifier hs-type">Fetchable</span></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Types.html#ListOf"><span class="hs-identifier hs-type">ListOf</span></a><span> </span><a href="#local-6989586621679121016"><span class="hs-identifier hs-type">f</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679121017"><span class="hs-identifier hs-type">t</span></a><span> </span><span class="hs-special">'</span><span class="hs-glyph">:</span><span> </span><a href="#local-6989586621679121019"><span class="hs-identifier hs-type">ts</span></a><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><a href="TensorFlow.Types.html#ListOf"><span class="hs-identifier hs-type">ListOf</span></a><span> </span><a href="#local-6989586621679121021"><span class="hs-identifier hs-type">i</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679121018"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-special">'</span><span class="hs-glyph">:</span><span> </span><span class="hs-keyword">as</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-119"></a><span> </span><a name="local-8214565720323895907"><a href="TensorFlow.Nodes.html#getFetch"><span class="hs-identifier">getFetch</span></a></a><span> </span><span class="hs-special">(</span><a name="local-6989586621679121022"><a href="#local-6989586621679121022"><span class="hs-identifier">x</span></a></a><span> </span><a href="TensorFlow.Types.html#%3A%2F"><span class="hs-operator hs-var">:/</span></a><span> </span><a name="local-6989586621679121023"><a href="#local-6989586621679121023"><span class="hs-identifier">xs</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">liftA2</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><a name="local-6989586621679121024"><a href="#local-6989586621679121024"><span class="hs-identifier">y</span></a></a><span> </span><a name="local-6989586621679121025"><a href="#local-6989586621679121025"><span class="hs-identifier">ys</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679121024"><span class="hs-identifier hs-var">y</span></a><span> </span><a href="TensorFlow.Types.html#%2F%3A%2F"><span class="hs-operator hs-var">/:/</span></a><span> </span><a href="#local-6989586621679121025"><span class="hs-identifier hs-var">ys</span></a><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><a href="TensorFlow.Nodes.html#getFetch"><span class="hs-identifier hs-var">getFetch</span></a><span> </span><a href="#local-6989586621679121022"><span class="hs-identifier hs-var">x</span></a><span> </span><span class="hs-operator hs-var">&lt;*&gt;</span><span> </span><a href="TensorFlow.Nodes.html#getFetch"><span class="hs-identifier hs-var">getFetch</span></a><span> </span><a href="#local-6989586621679121023"><span class="hs-identifier hs-var">xs</span></a><span>
</span><a name="line-120"></a><span>
</span><a name="line-121"></a><span class="hs-keyword">instance</span><span> </span><a href="TensorFlow.Nodes.html#Nodes"><span class="hs-identifier hs-type">Nodes</span></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-type">Tensor</span></a><span> </span><a href="#local-6989586621679121013"><span class="hs-identifier hs-type">v</span></a><span> </span><a href="#local-6989586621679121014"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-122"></a><span> </span><a name="local-8214565720323895909"><a href="TensorFlow.Nodes.html#getNodes"><span class="hs-identifier">getNodes</span></a></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-var">Tensor</span></a><span> </span><a name="local-6989586621679121015"><a href="#local-6989586621679121015"><span class="hs-identifier">o</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">Set</span><span class="hs-operator hs-var">.</span><span class="hs-identifier hs-var">singleton</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier">outputNodeName</span><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><a href="TensorFlow.Tensor.html#toBuild"><span class="hs-identifier hs-var">toBuild</span></a><span> </span><a href="#local-6989586621679121015"><span class="hs-identifier hs-var">o</span></a><span>
</span><a name="line-123"></a><span>
</span><a name="line-124"></a><span class="hs-identifier">fetchTensorVector</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><a name="local-6989586621679121076"><a href="#local-6989586621679121076"><span class="hs-identifier">a</span></a></a><span> </span><a name="local-6989586621679121077"><a href="#local-6989586621679121077"><span class="hs-identifier">v</span></a></a><span> </span><span class="hs-operator">.</span><span> </span><span class="hs-special">(</span><a href="TensorFlow.Types.html#TensorType"><span class="hs-identifier hs-type">TensorType</span></a><span> </span><a href="#local-6989586621679121076"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span>
</span><a name="line-125"></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-type">Tensor</span></a><span> </span><a href="#local-6989586621679121077"><span class="hs-identifier hs-type">v</span></a><span> </span><a href="#local-6989586621679121076"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="TensorFlow.Build.html#Build"><span class="hs-identifier hs-type">Build</span></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Nodes.html#Fetch"><span class="hs-identifier hs-type">Fetch</span></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Types.html#TensorData"><span class="hs-identifier hs-type">TensorData</span></a><span> </span><a href="#local-6989586621679121076"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-126"></a><a name="fetchTensorVector"><a href="TensorFlow.Nodes.html#fetchTensorVector"><span class="hs-identifier">fetchTensorVector</span></a></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-var">Tensor</span></a><span> </span><a name="local-6989586621679121081"><a href="#local-6989586621679121081"><span class="hs-identifier">o</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-127"></a><span> </span><a name="local-6989586621679121082"><a href="#local-6989586621679121082"><span class="hs-identifier">outputName</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><a href="TensorFlow.Build.html#encodeOutput"><span class="hs-identifier hs-var">encodeOutput</span></a><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><a href="TensorFlow.Tensor.html#toBuild"><span class="hs-identifier hs-var">toBuild</span></a><span> </span><a href="#local-6989586621679121081"><span class="hs-identifier hs-var">o</span></a><span>
</span><a name="line-128"></a><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="TensorFlow.Nodes.html#Fetch"><span class="hs-identifier hs-var">Fetch</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">Set</span><span class="hs-operator hs-var">.</span><span class="hs-identifier hs-var">singleton</span><span> </span><a href="#local-6989586621679121082"><span class="hs-identifier hs-var">outputName</span></a><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-glyph">\</span><a name="local-6989586621679121083"><a href="#local-6989586621679121083"><span class="hs-identifier">tensors</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><a name="line-129"></a><span> </span><span class="hs-keyword">let</span><span> </span><a name="local-6989586621679121084"><a href="#local-6989586621679121084"><span class="hs-identifier">tensorData</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679121083"><span class="hs-identifier hs-var">tensors</span></a><span> </span><span class="hs-identifier hs-var">Map</span><span class="hs-operator hs-var">.!</span><span> </span><a href="#local-6989586621679121082"><span class="hs-identifier hs-var">outputName</span></a><span>
</span><a name="line-130"></a><span> </span><a name="local-6989586621679121085"><a href="#local-6989586621679121085"><span class="hs-identifier">expectedType</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Types.html#tensorType"><span class="hs-identifier hs-var">tensorType</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">undefined</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="#local-6989586621679121076"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span>
</span><a name="line-131"></a><span> </span><a name="local-6989586621679121086"><a href="#local-6989586621679121086"><span class="hs-identifier">actualType</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">FFI</span><span class="hs-operator">.</span><span class="hs-identifier">tensorDataType</span><span> </span><a href="#local-6989586621679121084"><span class="hs-identifier hs-var">tensorData</span></a><span>
</span><a name="line-132"></a><span> </span><a name="local-6989586621679121087"><a href="#local-6989586621679121087"><span class="hs-identifier">badTypeError</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">error</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-string">&quot;Bad tensor type: expected &quot;</span><span>
</span><a name="line-133"></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-identifier hs-var">show</span><span> </span><a href="#local-6989586621679121085"><span class="hs-identifier hs-var">expectedType</span></a><span>
</span><a name="line-134"></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-string">&quot;, got &quot;</span><span>
</span><a name="line-135"></a><span> </span><span class="hs-operator hs-var">++</span><span> </span><span class="hs-identifier hs-var">show</span><span> </span><a href="#local-6989586621679121086"><span class="hs-identifier hs-var">actualType</span></a><span>
</span><a name="line-136"></a><span> </span><span class="hs-keyword">in</span><span> </span><span class="hs-keyword">if</span><span> </span><a href="#local-6989586621679121085"><span class="hs-identifier hs-var">expectedType</span></a><span> </span><span class="hs-operator hs-var">/=</span><span> </span><a href="#local-6989586621679121086"><span class="hs-identifier hs-var">actualType</span></a><span>
</span><a name="line-137"></a><span> </span><span class="hs-keyword">then</span><span> </span><a href="#local-6989586621679121087"><span class="hs-identifier hs-var">badTypeError</span></a><span>
</span><a name="line-138"></a><span> </span><span class="hs-keyword">else</span><span> </span><a href="TensorFlow.Types.html#TensorData"><span class="hs-identifier hs-var">TensorData</span></a><span> </span><a href="#local-6989586621679121084"><span class="hs-identifier hs-var">tensorData</span></a><span>
</span><a name="line-139"></a><span>
</span><a name="line-140"></a><span class="hs-comment">-- The constraint &quot;a ~ a'&quot; means that the input/output of fetch can constrain</span><span>
</span><a name="line-141"></a><span class="hs-comment">-- the TensorType of each other.</span><span>
</span><a name="line-142"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-special">(</span><a href="TensorFlow.Types.html#TensorType"><span class="hs-identifier hs-type">TensorType</span></a><span> </span><a href="#local-6989586621679121010"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">,</span><span> </span><a href="#local-6989586621679121010"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">~</span><span> </span><a href="#local-6989586621679121011"><span class="hs-identifier hs-type">a'</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="TensorFlow.Nodes.html#Fetchable"><span class="hs-identifier hs-type">Fetchable</span></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-type">Tensor</span></a><span> </span><a href="#local-6989586621679121012"><span class="hs-identifier hs-type">v</span></a><span> </span><a href="#local-6989586621679121010"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><a href="TensorFlow.Types.html#TensorData"><span class="hs-identifier hs-type">TensorData</span></a><span> </span><a href="#local-6989586621679121011"><span class="hs-identifier hs-type">a'</span></a><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-143"></a><span> </span><a name="local-8214565720323895907"><a href="TensorFlow.Nodes.html#getFetch"><span class="hs-identifier">getFetch</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Nodes.html#fetchTensorVector"><span class="hs-identifier hs-var">fetchTensorVector</span></a><span>
</span><a name="line-144"></a><span>
</span><a name="line-145"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-special">(</span><a href="TensorFlow.Types.html#TensorType"><span class="hs-identifier hs-type">TensorType</span></a><span> </span><a href="#local-6989586621679121005"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">,</span><span> </span><a href="TensorFlow.Types.html#TensorDataType"><span class="hs-identifier hs-type">TensorDataType</span></a><span> </span><a href="#local-6989586621679121006"><span class="hs-identifier hs-type">s</span></a><span> </span><a href="#local-6989586621679121005"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">,</span><span> </span><a href="#local-6989586621679121005"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">~</span><span> </span><a href="#local-6989586621679121007"><span class="hs-identifier hs-type">a'</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="TensorFlow.Nodes.html#Fetchable"><span class="hs-identifier hs-type">Fetchable</span></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-type">Tensor</span></a><span> </span><a href="#local-6989586621679121008"><span class="hs-identifier hs-type">v</span></a><span> </span><a href="#local-6989586621679121005"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679121006"><span class="hs-identifier hs-type">s</span></a><span> </span><a href="#local-6989586621679121007"><span class="hs-identifier hs-type">a'</span></a><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-146"></a><span> </span><a name="local-8214565720323895907"><a href="TensorFlow.Nodes.html#getFetch"><span class="hs-identifier">getFetch</span></a></a><span> </span><a name="local-6989586621679121009"><a href="#local-6989586621679121009"><span class="hs-identifier">t</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">fmap</span><span> </span><a href="TensorFlow.Types.html#decodeTensorData"><span class="hs-identifier hs-var">decodeTensorData</span></a><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><a href="TensorFlow.Nodes.html#fetchTensorVector"><span class="hs-identifier hs-var">fetchTensorVector</span></a><span> </span><a href="#local-6989586621679121009"><span class="hs-identifier hs-var">t</span></a><span>
</span><a name="line-147"></a></pre></body></html>