<!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><span id="line-2"></span><span class="hs-comment">--</span><span> </span><span id="line-3"></span><span class="hs-comment">-- Licensed under the Apache License, Version 2.0 (the "License");</span><span> </span><span id="line-4"></span><span class="hs-comment">-- you may not use this file except in compliance with the License.</span><span> </span><span id="line-5"></span><span class="hs-comment">-- You may obtain a copy of the License at</span><span> </span><span id="line-6"></span><span class="hs-comment">--</span><span> </span><span id="line-7"></span><span class="hs-comment">-- http://www.apache.org/licenses/LICENSE-2.0</span><span> </span><span id="line-8"></span><span class="hs-comment">--</span><span> </span><span id="line-9"></span><span class="hs-comment">-- Unless required by applicable law or agreed to in writing, software</span><span> </span><span id="line-10"></span><span class="hs-comment">-- distributed under the License is distributed on an "AS IS" BASIS,</span><span> </span><span id="line-11"></span><span class="hs-comment">-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span> </span><span id="line-12"></span><span class="hs-comment">-- See the License for the specific language governing permissions and</span><span> </span><span id="line-13"></span><span class="hs-comment">-- limitations under the License.</span><span> </span><span id="line-14"></span><span> </span><span id="line-15"></span><span class="hs-pragma">{-# LANGUAGE GeneralizedNewtypeDeriving #-}</span><span> </span><span id="line-16"></span><span class="hs-pragma">{-# LANGUAGE FlexibleInstances #-}</span><span> </span><span id="line-17"></span><span class="hs-pragma">{-# LANGUAGE LambdaCase #-}</span><span> </span><span id="line-18"></span><span class="hs-pragma">{-# LANGUAGE FunctionalDependencies #-}</span><span> </span><span id="line-19"></span><span class="hs-pragma">{-# LANGUAGE MultiParamTypeClasses #-}</span><span> </span><span id="line-20"></span><span class="hs-pragma">{-# LANGUAGE OverloadedStrings #-}</span><span> </span><span id="line-21"></span><span class="hs-pragma">{-# LANGUAGE Rank2Types #-}</span><span> </span><span id="line-22"></span><span class="hs-pragma">{-# LANGUAGE TypeFamilies #-}</span><span> </span><span id="line-23"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">TensorFlow.Build</span><span> </span><span id="line-24"></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><span class="hs-comment">-- * Graph node types</span></span><span> </span><span id="line-25"></span><span> </span><span class="annot"><a href="TensorFlow.Output.html#ControlNode"><span class="hs-identifier">ControlNode</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span> </span><span id="line-26"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#Unique"><span class="hs-identifier">Unique</span></a></span><span> </span><span id="line-27"></span><span> </span><span class="annot"><span class="hs-comment">-- * Ops</span></span><span> </span><span id="line-28"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#explicitName"><span class="hs-identifier">explicitName</span></a></span><span> </span><span id="line-29"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#implicitName"><span class="hs-identifier">implicitName</span></a></span><span> </span><span id="line-30"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#opDef"><span class="hs-identifier">opDef</span></a></span><span> </span><span id="line-31"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#opDefWithName"><span class="hs-identifier">opDefWithName</span></a></span><span> </span><span id="line-32"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Output.html#opName"><span class="hs-identifier">opName</span></a></span><span> </span><span id="line-33"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Output.html#opType"><span class="hs-identifier">opType</span></a></span><span> </span><span id="line-34"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Output.html#opAttr"><span class="hs-identifier">opAttr</span></a></span><span> </span><span id="line-35"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Output.html#opInputs"><span class="hs-identifier">opInputs</span></a></span><span> </span><span id="line-36"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Output.html#opControlInputs"><span class="hs-identifier">opControlInputs</span></a></span><span> </span><span id="line-37"></span><span> </span><span class="annot"><span class="hs-comment">-- * The Build monad</span></span><span> </span><span id="line-38"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#GraphState"><span class="hs-identifier">GraphState</span></a></span><span> </span><span id="line-39"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#renderedNodeDefs"><span class="hs-identifier">renderedNodeDefs</span></a></span><span> </span><span id="line-40"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#BuildT"><span class="hs-identifier">BuildT</span></a></span><span> </span><span id="line-41"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#Build"><span class="hs-identifier">Build</span></a></span><span> </span><span id="line-42"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#MonadBuild"><span class="hs-identifier">MonadBuild</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span> </span><span id="line-43"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#addInitializer"><span class="hs-identifier">addInitializer</span></a></span><span> </span><span id="line-44"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#hoistBuildT"><span class="hs-identifier">hoistBuildT</span></a></span><span> </span><span id="line-45"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#evalBuildT"><span class="hs-identifier">evalBuildT</span></a></span><span> </span><span id="line-46"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#runBuildT"><span class="hs-identifier">runBuildT</span></a></span><span> </span><span id="line-47"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#asGraphDef"><span class="hs-identifier">asGraphDef</span></a></span><span> </span><span id="line-48"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#addGraphDef"><span class="hs-identifier">addGraphDef</span></a></span><span> </span><span id="line-49"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#flushInitializers"><span class="hs-identifier">flushInitializers</span></a></span><span> </span><span id="line-50"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#flushNodeBuffer"><span class="hs-identifier">flushNodeBuffer</span></a></span><span> </span><span id="line-51"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#summaries"><span class="hs-identifier">summaries</span></a></span><span> </span><span id="line-52"></span><span> </span><span class="annot"><span class="hs-comment">-- * Creating and looking up Ops</span></span><span> </span><span id="line-53"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#getOrAddOp"><span class="hs-identifier">getOrAddOp</span></a></span><span> </span><span id="line-54"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#addNewOp"><span class="hs-identifier">addNewOp</span></a></span><span> </span><span id="line-55"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#encodeOutput"><span class="hs-identifier">encodeOutput</span></a></span><span> </span><span id="line-56"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#lookupNode"><span class="hs-identifier">lookupNode</span></a></span><span> </span><span id="line-57"></span><span> </span><span class="annot"><span class="hs-comment">-- * Modifying all nodes in a Build action</span></span><span> </span><span id="line-58"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#withStateLens"><span class="hs-identifier">withStateLens</span></a></span><span> </span><span id="line-59"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#withDevice"><span class="hs-identifier">withDevice</span></a></span><span> </span><span id="line-60"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#withNameScope"><span class="hs-identifier">withNameScope</span></a></span><span> </span><span id="line-61"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#withNodeDependencies"><span class="hs-identifier">withNodeDependencies</span></a></span><span> </span><span id="line-62"></span><span> </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span> </span><span id="line-63"></span><span> </span><span id="line-64"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Data.ProtoLens.Message</span></span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">defMessage</span></span><span class="hs-special">)</span><span> </span><span id="line-65"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Control.Monad.Catch</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">MonadThrow</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">MonadCatch</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">MonadMask</span></span><span class="hs-special">)</span><span> </span><span id="line-66"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Control.Monad.Fix</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">MonadFix</span></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span id="line-67"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Control.Monad.IO.Class</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">MonadIO</span></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span id="line-68"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Control.Monad.Trans.Class</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">MonadTrans</span></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span id="line-69"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Control.Monad.Trans.State.Strict</span></span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">StateT</span></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">mapStateT</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">evalStateT</span></span><span class="hs-special">)</span><span> </span><span id="line-70"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Data.Functor.Identity</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">Identity</span></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span id="line-71"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><span class="hs-identifier">Data.Map.Strict</span></span><span> </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">Map</span></span><span> </span><span id="line-72"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><span class="hs-identifier">Data.Set</span></span><span> </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">Set</span></span><span> </span><span id="line-73"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Data.Set</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">Set</span></span><span class="hs-special">)</span><span> </span><span id="line-74"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Data.String</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">IsString</span></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span id="line-75"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Data.Text</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">Text</span></span><span class="hs-special">)</span><span> </span><span id="line-76"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><span class="hs-identifier">Data.Text</span></span><span> </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">Text</span></span><span> </span><span id="line-77"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Lens.Family2</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">Lens'</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-operator">(.~)</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-operator">(^.)</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-operator">(&)</span></span><span class="hs-special">)</span><span> </span><span id="line-78"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Lens.Family2.State.Strict</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">MonadState</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">use</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">uses</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-operator">(.=)</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-operator">(<>=)</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-operator">(%=)</span></span><span class="hs-special">)</span><span> </span><span id="line-79"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Lens.Family2.Unchecked</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">lens</span></span><span class="hs-special">)</span><span> </span><span id="line-80"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Proto.Tensorflow.Core.Framework.Graph</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">GraphDef</span></span><span class="hs-special">)</span><span> </span><span id="line-81"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Proto.Tensorflow.Core.Framework.Graph_Fields</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">node</span></span><span class="hs-special">)</span><span> </span><span id="line-82"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Proto.Tensorflow.Core.Framework.NodeDef</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">NodeDef</span></span><span class="hs-special">)</span><span> </span><span id="line-83"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Proto.Tensorflow.Core.Framework.NodeDef_Fields</span></span><span> </span><span id="line-84"></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><span class="hs-identifier">attr</span></span><span> </span><span id="line-85"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">input</span></span><span> </span><span id="line-86"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">device</span></span><span> </span><span id="line-87"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">name</span></span><span> </span><span id="line-88"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">op</span></span><span> </span><span id="line-89"></span><span> </span><span class="hs-special">)</span><span> </span><span id="line-90"></span><span> </span><span id="line-91"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="TensorFlow.Output.html"><span class="hs-identifier">TensorFlow.Output</span></a></span><span> </span><span id="line-92"></span><span> </span><span id="line-93"></span><span class="hs-keyword">newtype</span><span> </span><span id="Unique"><span class="annot"><a href="TensorFlow.Build.html#Unique"><span class="hs-identifier hs-var">Unique</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="Unique"><span class="annot"><a href="TensorFlow.Build.html#Unique"><span class="hs-identifier hs-var">Unique</span></a></span></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span id="line-94"></span><span> </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679165590"><span id="local-6989586621679165592"><span class="annot"><span class="annottext">Unique -> Unique -> Bool (Unique -> Unique -> Bool) -> (Unique -> Unique -> Bool) -> Eq Unique forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Unique -> Unique -> Bool $c/= :: Unique -> Unique -> Bool == :: Unique -> Unique -> Bool $c== :: Unique -> Unique -> Bool </span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var">Eq</span></span></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621679165574"><span id="local-6989586621679165576"><span id="local-6989586621679165578"><span id="local-6989586621679165580"><span id="local-6989586621679165582"><span id="local-6989586621679165584"><span id="local-6989586621679165586"><span class="annot"><span class="annottext">Eq Unique Eq Unique => (Unique -> Unique -> Ordering) -> (Unique -> Unique -> Bool) -> (Unique -> Unique -> Bool) -> (Unique -> Unique -> Bool) -> (Unique -> Unique -> Bool) -> (Unique -> Unique -> Unique) -> (Unique -> Unique -> Unique) -> Ord Unique Unique -> Unique -> Bool Unique -> Unique -> Ordering Unique -> Unique -> Unique forall a. Eq a => (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a min :: Unique -> Unique -> Unique $cmin :: Unique -> Unique -> Unique max :: Unique -> Unique -> Unique $cmax :: Unique -> Unique -> Unique >= :: Unique -> Unique -> Bool $c>= :: Unique -> Unique -> Bool > :: Unique -> Unique -> Bool $c> :: Unique -> Unique -> Bool <= :: Unique -> Unique -> Bool $c<= :: Unique -> Unique -> Bool < :: Unique -> Unique -> Bool $c< :: Unique -> Unique -> Bool compare :: Unique -> Unique -> Ordering $ccompare :: Unique -> Unique -> Ordering $cp1Ord :: Eq Unique </span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Ord</span></span></span></span></span></span></span></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621679165557"><span id="local-6989586621679165559"><span id="local-6989586621679165561"><span id="local-6989586621679165563"><span id="local-6989586621679165565"><span id="local-6989586621679165567"><span id="local-6989586621679165569"><span id="local-6989586621679165571"><span class="annot"><span class="annottext">Int -> Unique Unique -> Int Unique -> [Unique] Unique -> Unique Unique -> Unique -> [Unique] Unique -> Unique -> Unique -> [Unique] (Unique -> Unique) -> (Unique -> Unique) -> (Int -> Unique) -> (Unique -> Int) -> (Unique -> [Unique]) -> (Unique -> Unique -> [Unique]) -> (Unique -> Unique -> [Unique]) -> (Unique -> Unique -> Unique -> [Unique]) -> Enum Unique forall a. (a -> a) -> (a -> a) -> (Int -> a) -> (a -> Int) -> (a -> [a]) -> (a -> a -> [a]) -> (a -> a -> [a]) -> (a -> a -> a -> [a]) -> Enum a enumFromThenTo :: Unique -> Unique -> Unique -> [Unique] $cenumFromThenTo :: Unique -> Unique -> Unique -> [Unique] enumFromTo :: Unique -> Unique -> [Unique] $cenumFromTo :: Unique -> Unique -> [Unique] enumFromThen :: Unique -> Unique -> [Unique] $cenumFromThen :: Unique -> Unique -> [Unique] enumFrom :: Unique -> [Unique] $cenumFrom :: Unique -> [Unique] fromEnum :: Unique -> Int $cfromEnum :: Unique -> Int toEnum :: Int -> Unique $ctoEnum :: Int -> Unique pred :: Unique -> Unique $cpred :: Unique -> Unique succ :: Unique -> Unique $csucc :: Unique -> Unique </span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Enum</span></span></span></span></span></span></span></span></span></span><span class="hs-special">)</span><span> </span><span id="line-95"></span><span> </span><span id="line-96"></span><span class="hs-comment">--------------</span><span> </span><span id="line-97"></span><span> </span><span id="line-98"></span><span class="annot"><a href="TensorFlow.Build.html#implicitName"><span class="hs-identifier hs-type">implicitName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="TensorFlow.Output.html#PendingNodeName"><span class="hs-identifier hs-type">PendingNodeName</span></a></span><span> </span><span id="line-99"></span><span id="implicitName"><span class="annot"><span class="annottext">implicitName :: PendingNodeName </span><a href="TensorFlow.Build.html#implicitName"><span class="hs-identifier hs-var hs-var">implicitName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PendingNodeName </span><a href="TensorFlow.Output.html#ImplicitName"><span class="hs-identifier hs-var">ImplicitName</span></a></span><span> </span><span id="line-100"></span><span> </span><span id="line-101"></span><span class="annot"><a href="TensorFlow.Build.html#explicitName"><span class="hs-identifier hs-type">explicitName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Text</span></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="TensorFlow.Output.html#PendingNodeName"><span class="hs-identifier hs-type">PendingNodeName</span></a></span><span> </span><span id="line-102"></span><span id="explicitName"><span class="annot"><span class="annottext">explicitName :: Text -> PendingNodeName </span><a href="TensorFlow.Build.html#explicitName"><span class="hs-identifier hs-var hs-var">explicitName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Text -> PendingNodeName </span><a href="TensorFlow.Output.html#ExplicitName"><span class="hs-identifier hs-var">ExplicitName</span></a></span><span> </span><span id="line-103"></span><span> </span><span id="line-104"></span><span class="hs-keyword">newtype</span><span> </span><span id="Scope"><span class="annot"><a href="TensorFlow.Build.html#Scope"><span class="hs-identifier hs-var">Scope</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="Scope"><span class="annot"><a href="TensorFlow.Build.html#Scope"><span class="hs-identifier hs-var">Scope</span></a></span></span><span> </span><span class="hs-special">{</span><span id="unScope"><span class="annot"><span class="annottext">Scope -> Text </span><a href="TensorFlow.Build.html#unScope"><span class="hs-identifier hs-var hs-var">unScope</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Text</span></span><span class="hs-special">}</span><span> </span><span id="line-105"></span><span> </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679165548"><span id="local-6989586621679165550"><span class="annot"><span class="annottext">Scope -> Scope -> Bool (Scope -> Scope -> Bool) -> (Scope -> Scope -> Bool) -> Eq Scope forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Scope -> Scope -> Bool $c/= :: Scope -> Scope -> Bool == :: Scope -> Scope -> Bool $c== :: Scope -> Scope -> Bool </span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var">Eq</span></span></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621679165533"><span id="local-6989586621679165535"><span id="local-6989586621679165537"><span id="local-6989586621679165539"><span id="local-6989586621679165541"><span id="local-6989586621679165543"><span id="local-6989586621679165545"><span class="annot"><span class="annottext">Eq Scope Eq Scope => (Scope -> Scope -> Ordering) -> (Scope -> Scope -> Bool) -> (Scope -> Scope -> Bool) -> (Scope -> Scope -> Bool) -> (Scope -> Scope -> Bool) -> (Scope -> Scope -> Scope) -> (Scope -> Scope -> Scope) -> Ord Scope Scope -> Scope -> Bool Scope -> Scope -> Ordering Scope -> Scope -> Scope forall a. Eq a => (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a min :: Scope -> Scope -> Scope $cmin :: Scope -> Scope -> Scope max :: Scope -> Scope -> Scope $cmax :: Scope -> Scope -> Scope >= :: Scope -> Scope -> Bool $c>= :: Scope -> Scope -> Bool > :: Scope -> Scope -> Bool $c> :: Scope -> Scope -> Bool <= :: Scope -> Scope -> Bool $c<= :: Scope -> Scope -> Bool < :: Scope -> Scope -> Bool $c< :: Scope -> Scope -> Bool compare :: Scope -> Scope -> Ordering $ccompare :: Scope -> Scope -> Ordering $cp1Ord :: Eq Scope </span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Ord</span></span></span></span></span></span></span></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621679165531"><span class="annot"><span class="annottext">String -> Scope (String -> Scope) -> IsString Scope forall a. (String -> a) -> IsString a fromString :: String -> Scope $cfromString :: String -> Scope </span><span class="hs-identifier hs-var hs-var hs-var hs-var">IsString</span></span></span><span class="hs-special">)</span><span> </span><span id="line-106"></span><span> </span><span id="line-107"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679165525"><span id="local-6989586621679165528"><span class="annot"><span class="hs-identifier hs-type">Show</span></span><span> </span><span class="annot"><a href="TensorFlow.Build.html#Scope"><span class="hs-identifier hs-type">Scope</span></a></span></span></span><span> </span><span class="hs-keyword">where</span><span> </span><span id="line-108"></span><span> </span><span id="local-6989586621679165523"><span class="annot"><span class="annottext">show :: Scope -> String </span><span class="hs-identifier hs-var hs-var hs-var hs-var">show</span></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Text -> String forall a. Show a => a -> String </span><span class="hs-identifier hs-var">show</span></span><span> </span><span class="annot"><span class="annottext">(Text -> String) -> (Scope -> Text) -> Scope -> String forall b c a. (b -> c) -> (a -> b) -> a -> c </span><span class="hs-operator hs-var">.</span></span><span> </span><span class="annot"><span class="annottext">Scope -> Text </span><a href="TensorFlow.Build.html#unScope"><span class="hs-identifier hs-var hs-var">unScope</span></a></span><span> </span><span id="line-109"></span><span> </span><span id="line-110"></span><span class="annot"><a href="TensorFlow.Build.html#opDef"><span class="hs-identifier hs-type">opDef</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="TensorFlow.Output.html#OpType"><span class="hs-identifier hs-type">OpType</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="TensorFlow.Output.html#OpDef"><span class="hs-identifier hs-type">OpDef</span></a></span><span> </span><span id="line-111"></span><span id="opDef"><span class="annot"><span class="annottext">opDef :: OpType -> OpDef </span><a href="TensorFlow.Build.html#opDef"><span class="hs-identifier hs-var hs-var">opDef</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PendingNodeName -> OpType -> OpDef </span><a href="TensorFlow.Build.html#opDefWithName"><span class="hs-identifier hs-var">opDefWithName</span></a></span><span> </span><span class="annot"><span class="annottext">PendingNodeName </span><a href="TensorFlow.Output.html#ImplicitName"><span class="hs-identifier hs-var">ImplicitName</span></a></span><span> </span><span id="line-112"></span><span> </span><span id="line-113"></span><span class="annot"><a href="TensorFlow.Build.html#opDefWithName"><span class="hs-identifier hs-type">opDefWithName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="TensorFlow.Output.html#PendingNodeName"><span class="hs-identifier hs-type">PendingNodeName</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="TensorFlow.Output.html#OpType"><span class="hs-identifier hs-type">OpType</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="TensorFlow.Output.html#OpDef"><span class="hs-identifier hs-type">OpDef</span></a></span><span> </span><span id="line-114"></span><span id="opDefWithName"><span class="annot"><span class="annottext">opDefWithName :: PendingNodeName -> OpType -> OpDef </span><a href="TensorFlow.Build.html#opDefWithName"><span class="hs-identifier hs-var hs-var">opDefWithName</span></a></span></span><span> </span><span id="local-6989586621679165520"><span class="annot"><span class="annottext">n :: PendingNodeName </span><a href="#local-6989586621679165520"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span id="local-6989586621679165519"><span class="annot"><span class="annottext">t :: OpType </span><a href="#local-6989586621679165519"><span class="hs-identifier hs-var">t</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">$WOpDef :: PendingNodeName -> OpType -> Map Text AttrValue -> [Output] -> [NodeName] -> OpDef </span><a href="TensorFlow.Output.html#%24WOpDef"><span class="hs-identifier hs-type hs-type">OpDef</span></a></span><span> </span><span id="line-115"></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">_opName :: PendingNodeName </span><a href="TensorFlow.Output.html#_opName"><span class="hs-identifier hs-var">_opName</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PendingNodeName </span><a href="#local-6989586621679165520"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span id="line-116"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">_opType :: OpType </span><a href="TensorFlow.Output.html#_opType"><span class="hs-identifier hs-var">_opType</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">OpType </span><a href="#local-6989586621679165519"><span class="hs-identifier hs-var">t</span></a></span><span> </span><span id="line-117"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">_opAttrs :: Map Text AttrValue </span><a href="TensorFlow.Output.html#_opAttrs"><span class="hs-identifier hs-var">_opAttrs</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Map Text AttrValue forall k a. Map k a </span><span class="hs-identifier hs-var">Map.empty</span></span><span> </span><span id="line-118"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">_opInputs :: [Output] </span><a href="TensorFlow.Output.html#_opInputs"><span class="hs-identifier hs-var">_opInputs</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span id="line-119"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">_opControlInputs :: [NodeName] </span><a href="TensorFlow.Output.html#_opControlInputs"><span class="hs-identifier hs-var">_opControlInputs</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span id="line-120"></span><span> </span><span class="hs-special">}</span><span> </span><span id="line-121"></span><span> </span><span id="line-122"></span><span class="hs-keyword">data</span><span> </span><span id="GraphState"><span class="annot"><a href="TensorFlow.Build.html#GraphState"><span class="hs-identifier hs-var">GraphState</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="GraphState"><span class="annot"><a href="TensorFlow.Build.html#GraphState"><span class="hs-identifier hs-var">GraphState</span></a></span></span><span> </span><span id="line-123"></span><span> </span><span class="hs-special">{</span><span> </span><span id="_renderedNodes"><span class="annot"><span class="annottext">GraphState -> Map PendingNode NodeDef </span><a href="TensorFlow.Build.html#_renderedNodes"><span class="hs-identifier hs-var hs-var">_renderedNodes</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-glyph">!</span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier hs-type">Map.Map</span></span><span> </span><span class="annot"><a href="TensorFlow.Build.html#PendingNode"><span class="hs-identifier hs-type">PendingNode</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">NodeDef</span></span><span class="hs-special">)</span><span> </span><span id="line-124"></span><span> </span><span class="hs-comment">-- ^ Nodes which have been rendered. Keeps track of the unique ID we</span><span> </span><span id="line-125"></span><span> </span><span class="hs-comment">-- assign each implicitly-named node. Also prevents us from adding the</span><span> </span><span id="line-126"></span><span> </span><span class="hs-comment">-- same node (implicit or explicit) more than once to the nodeBuffer.</span><span> </span><span id="line-127"></span><span> </span><span class="hs-special">,</span><span> </span><span id="_renderedNodeDefs"><span class="annot"><span class="annottext">GraphState -> Map NodeName NodeDef </span><a href="TensorFlow.Build.html#_renderedNodeDefs"><span class="hs-identifier hs-var hs-var">_renderedNodeDefs</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-glyph">!</span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier hs-type">Map.Map</span></span><span> </span><span class="annot"><a href="TensorFlow.Output.html#NodeName"><span class="hs-identifier hs-type">NodeName</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">NodeDef</span></span><span class="hs-special">)</span><span> </span><span id="line-128"></span><span> </span><span class="hs-comment">-- ^ The NodeDefs of nodes which have been rendered. Used by the</span><span> </span><span id="line-129"></span><span> </span><span class="hs-comment">-- Gradient module to inspect the node graph.</span><span> </span><span id="line-130"></span><span> </span><span class="hs-special">,</span><span> </span><span id="_nodeBuffer"><span class="annot"><span class="annottext">GraphState -> [NodeDef] </span><a href="TensorFlow.Build.html#_nodeBuffer"><span class="hs-identifier hs-var hs-var">_nodeBuffer</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="hs-identifier hs-type">NodeDef</span></span><span class="hs-special">]</span><span> </span><span id="line-131"></span><span> </span><span class="hs-comment">-- ^ A list of nodes that should be passed to TensorFlow during</span><span> </span><span id="line-132"></span><span> </span><span class="hs-comment">-- the next call to Session.extend (TF_ExtendGraph).</span><span> </span><span id="line-133"></span><span> </span><span class="hs-special">,</span><span> </span><span id="_nextUnique"><span class="annot"><span class="annottext">GraphState -> Unique </span><a href="TensorFlow.Build.html#_nextUnique"><span class="hs-identifier hs-var hs-var">_nextUnique</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-glyph">!</span><span class="annot"><a href="TensorFlow.Build.html#Unique"><span class="hs-identifier hs-type">Unique</span></a></span><span> </span><span id="line-134"></span><span> </span><span class="hs-comment">-- ^ Unique ID for the next node</span><span> </span><span id="line-135"></span><span> </span><span class="hs-comment">-- TODO(judahjacobson): watch for clashes between auto and user names.</span><span> </span><span id="line-136"></span><span> </span><span class="hs-special">,</span><span> </span><span id="_defaultDevice"><span class="annot"><span class="annottext">GraphState -> Maybe Device </span><a href="TensorFlow.Build.html#_defaultDevice"><span class="hs-identifier hs-var hs-var">_defaultDevice</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-glyph">!</span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier hs-type">Maybe</span></span><span> </span><span class="annot"><a href="TensorFlow.Output.html#Device"><span class="hs-identifier hs-type">Device</span></a></span><span class="hs-special">)</span><span> </span><span id="line-137"></span><span> </span><span class="hs-special">,</span><span> </span><span id="_currentScope"><span class="annot"><span class="annottext">GraphState -> [Scope] </span><a href="TensorFlow.Build.html#_currentScope"><span class="hs-identifier hs-var hs-var">_currentScope</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="TensorFlow.Build.html#Scope"><span class="hs-identifier hs-type">Scope</span></a></span><span class="hs-special">]</span><span> </span><span id="line-138"></span><span> </span><span class="hs-special">,</span><span> </span><span id="_defaultControlInputs"><span class="annot"><span class="annottext">GraphState -> Set NodeName </span><a href="TensorFlow.Build.html#_defaultControlInputs"><span class="hs-identifier hs-var hs-var">_defaultControlInputs</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-glyph">!</span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier hs-type">Set</span></span><span> </span><span class="annot"><a href="TensorFlow.Output.html#NodeName"><span class="hs-identifier hs-type">NodeName</span></a></span><span class="hs-special">)</span><span> </span><span id="line-139"></span><span> </span><span class="hs-special">,</span><span> </span><span id="_initializationNodes"><span class="annot"><span class="annottext">GraphState -> [NodeName] </span><a href="TensorFlow.Build.html#_initializationNodes"><span class="hs-identifier hs-var hs-var">_initializationNodes</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="TensorFlow.Output.html#NodeName"><span class="hs-identifier hs-type">NodeName</span></a></span><span class="hs-special">]</span><span> </span><span id="line-140"></span><span> </span><span class="hs-comment">-- ^ The nodes to run next time a TF.run is issued, typically</span><span> </span><span id="line-141"></span><span> </span><span class="hs-comment">-- variable initializers.</span><span> </span><span id="line-142"></span><span> </span><span class="hs-special">,</span><span> </span><span id="_summaries"><span class="annot"><span class="annottext">GraphState -> [Output] </span><a href="TensorFlow.Build.html#_summaries"><span class="hs-identifier hs-var hs-var">_summaries</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="TensorFlow.Output.html#Output"><span class="hs-identifier hs-type">Output</span></a></span><span class="hs-special">]</span><span> </span><span id="line-143"></span><span> </span><span class="hs-comment">-- ^ The tensors for summary (ByteString type)</span><span> </span><span id="line-144"></span><span> </span><span class="hs-special">}</span><span> </span><span id="line-145"></span><span> </span><span id="line-146"></span><span class="hs-comment">-- | A node definition without its final name. Used as a key in the</span><span> </span><span id="line-147"></span><span class="hs-comment">-- "renderedNodes" map.</span><span> </span><span id="line-148"></span><span class="hs-comment">-- The NodeDef contained inside has an empty "name" field.</span><span> </span><span id="line-149"></span><span class="hs-keyword">data</span><span> </span><span id="PendingNode"><span class="annot"><a href="TensorFlow.Build.html#PendingNode"><span class="hs-identifier hs-var">PendingNode</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="PendingNode"><span class="annot"><a href="TensorFlow.Build.html#PendingNode"><span class="hs-identifier hs-var">PendingNode</span></a></span></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="TensorFlow.Build.html#Scope"><span class="hs-identifier hs-type">Scope</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">!</span><span class="annot"><a href="TensorFlow.Output.html#PendingNodeName"><span class="hs-identifier hs-type">PendingNodeName</span></a></span><span> </span><span class="hs-glyph">!</span><span class="annot"><span class="hs-identifier hs-type">NodeDef</span></span><span> </span><span id="line-150"></span><span> </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679165496"><span id="local-6989586621679165498"><span class="annot"><span class="annottext">PendingNode -> PendingNode -> Bool (PendingNode -> PendingNode -> Bool) -> (PendingNode -> PendingNode -> Bool) -> Eq PendingNode forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: PendingNode -> PendingNode -> Bool $c/= :: PendingNode -> PendingNode -> Bool == :: PendingNode -> PendingNode -> Bool $c== :: PendingNode -> PendingNode -> Bool </span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var">Eq</span></span></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621679165481"><span id="local-6989586621679165483"><span id="local-6989586621679165485"><span id="local-6989586621679165487"><span id="local-6989586621679165489"><span id="local-6989586621679165491"><span id="local-6989586621679165493"><span class="annot"><span class="annottext">Eq PendingNode Eq PendingNode => (PendingNode -> PendingNode -> Ordering) -> (PendingNode -> PendingNode -> Bool) -> (PendingNode -> PendingNode -> Bool) -> (PendingNode -> PendingNode -> Bool) -> (PendingNode -> PendingNode -> Bool) -> (PendingNode -> PendingNode -> PendingNode) -> (PendingNode -> PendingNode -> PendingNode) -> Ord PendingNode PendingNode -> PendingNode -> Bool PendingNode -> PendingNode -> Ordering PendingNode -> PendingNode -> PendingNode forall a. Eq a => (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a min :: PendingNode -> PendingNode -> PendingNode $cmin :: PendingNode -> PendingNode -> PendingNode max :: PendingNode -> PendingNode -> PendingNode $cmax :: PendingNode -> PendingNode -> PendingNode >= :: PendingNode -> PendingNode -> Bool $c>= :: PendingNode -> PendingNode -> Bool > :: PendingNode -> PendingNode -> Bool $c> :: PendingNode -> PendingNode -> Bool <= :: PendingNode -> PendingNode -> Bool $c<= :: PendingNode -> PendingNode -> Bool < :: PendingNode -> PendingNode -> Bool $c< :: PendingNode -> PendingNode -> Bool compare :: PendingNode -> PendingNode -> Ordering $ccompare :: PendingNode -> PendingNode -> Ordering $cp1Ord :: Eq PendingNode </span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Ord</span></span></span></span></span></span></span></span></span><span class="hs-special">)</span><span> </span><span id="line-151"></span><span> </span><span id="line-152"></span><span class="hs-comment">-- Returns an _incomplete_ NodeDef. The name is fixed by addNewOpFromPending.</span><span> </span><span id="line-153"></span><span class="annot"><a href="TensorFlow.Build.html#pendingNodeDef"><span class="hs-identifier hs-type">pendingNodeDef</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#PendingNode"><span class="hs-identifier hs-type">PendingNode</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><span class="hs-identifier hs-type">NodeDef</span></span><span> </span><span id="line-154"></span><span id="pendingNodeDef"><span class="annot"><span class="annottext">pendingNodeDef :: PendingNode -> NodeDef </span><a href="TensorFlow.Build.html#pendingNodeDef"><span class="hs-identifier hs-var hs-var">pendingNodeDef</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="TensorFlow.Build.html#PendingNode"><span class="hs-identifier hs-type">PendingNode</span></a></span><span> </span><span class="hs-identifier">_</span><span> </span><span class="hs-identifier">_</span><span> </span><span id="local-6989586621679165479"><span class="annot"><span class="annottext">n :: NodeDef </span><a href="#local-6989586621679165479"><span class="hs-identifier hs-var">n</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NodeDef </span><a href="#local-6989586621679165479"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span id="line-155"></span><span> </span><span id="line-156"></span><span class="annot"><a href="TensorFlow.Build.html#initGraphState"><span class="hs-identifier hs-type">initGraphState</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#GraphState"><span class="hs-identifier hs-type">GraphState</span></a></span><span> </span><span id="line-157"></span><span id="initGraphState"><span class="annot"><span class="annottext">initGraphState :: GraphState </span><a href="TensorFlow.Build.html#initGraphState"><span class="hs-identifier hs-var hs-var">initGraphState</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="line-158"></span><span> </span><span class="annot"><span class="annottext">Map PendingNode NodeDef -> Map NodeName NodeDef -> [NodeDef] -> Unique -> Maybe Device -> [Scope] -> Set NodeName -> [NodeName] -> [Output] -> GraphState </span><a href="TensorFlow.Build.html#GraphState"><span class="hs-identifier hs-var">GraphState</span></a></span><span> </span><span class="annot"><span class="annottext">Map PendingNode NodeDef forall k a. Map k a </span><span class="hs-identifier hs-var">Map.empty</span></span><span> </span><span class="annot"><span class="annottext">Map NodeName NodeDef forall k a. Map k a </span><span class="hs-identifier hs-var">Map.empty</span></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -> Unique </span><a href="TensorFlow.Build.html#Unique"><span class="hs-identifier hs-var">Unique</span></a></span><span> </span><span class="annot"><span class="hs-number">0</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Maybe Device forall a. Maybe a </span><span class="hs-identifier hs-var">Nothing</span></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">Set NodeName forall a. Set a </span><span class="hs-identifier hs-var">Set.empty</span></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span id="line-159"></span><span> </span><span id="line-160"></span><span class="annot"><a href="TensorFlow.Build.html#renderedNodes"><span class="hs-identifier hs-type">renderedNodes</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Lens'</span></span><span> </span><span class="annot"><a href="TensorFlow.Build.html#GraphState"><span class="hs-identifier hs-type">GraphState</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier hs-type">Map.Map</span></span><span> </span><span class="annot"><a href="TensorFlow.Build.html#PendingNode"><span class="hs-identifier hs-type">PendingNode</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">NodeDef</span></span><span class="hs-special">)</span><span> </span><span id="line-161"></span><span id="renderedNodes"><span class="annot"><span class="annottext">renderedNodes :: LensLike' f GraphState (Map PendingNode NodeDef) </span><a href="TensorFlow.Build.html#renderedNodes"><span class="hs-identifier hs-var hs-var">renderedNodes</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(GraphState -> Map PendingNode NodeDef) -> (GraphState -> Map PendingNode NodeDef -> GraphState) -> Lens GraphState GraphState (Map PendingNode NodeDef) (Map PendingNode NodeDef) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b </span><span class="hs-identifier hs-var">lens</span></span><span> </span><span class="annot"><span class="annottext">GraphState -> Map PendingNode NodeDef </span><a href="TensorFlow.Build.html#_renderedNodes"><span class="hs-identifier hs-var hs-var">_renderedNodes</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span id="local-6989586621679165475"><span class="annot"><span class="annottext">g :: GraphState </span><a href="#local-6989586621679165475"><span class="hs-identifier hs-var">g</span></a></span></span><span> </span><span id="local-6989586621679165474"><span class="annot"><span class="annottext">x :: Map PendingNode NodeDef </span><a href="#local-6989586621679165474"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><span class="annottext">GraphState </span><a href="#local-6989586621679165475"><span class="hs-identifier hs-var">g</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">_renderedNodes :: Map PendingNode NodeDef </span><a href="TensorFlow.Build.html#_renderedNodes"><span class="hs-identifier hs-var">_renderedNodes</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Map PendingNode NodeDef </span><a href="#local-6989586621679165474"><span class="hs-identifier hs-var">x</span></a></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span id="line-162"></span><span> </span><span id="line-163"></span><span class="annot"><a href="TensorFlow.Build.html#renderedNodeDefs"><span class="hs-identifier hs-type">renderedNodeDefs</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Lens'</span></span><span> </span><span class="annot"><a href="TensorFlow.Build.html#GraphState"><span class="hs-identifier hs-type">GraphState</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier hs-type">Map.Map</span></span><span> </span><span class="annot"><a href="TensorFlow.Output.html#NodeName"><span class="hs-identifier hs-type">NodeName</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">NodeDef</span></span><span class="hs-special">)</span><span> </span><span id="line-164"></span><span id="renderedNodeDefs"><span class="annot"><span class="annottext">renderedNodeDefs :: LensLike' f GraphState (Map NodeName NodeDef) </span><a href="TensorFlow.Build.html#renderedNodeDefs"><span class="hs-identifier hs-var hs-var">renderedNodeDefs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(GraphState -> Map NodeName NodeDef) -> (GraphState -> Map NodeName NodeDef -> GraphState) -> Lens GraphState GraphState (Map NodeName NodeDef) (Map NodeName NodeDef) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b </span><span class="hs-identifier hs-var">lens</span></span><span> </span><span class="annot"><span class="annottext">GraphState -> Map NodeName NodeDef </span><a href="TensorFlow.Build.html#_renderedNodeDefs"><span class="hs-identifier hs-var hs-var">_renderedNodeDefs</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span id="local-6989586621679165473"><span class="annot"><span class="annottext">g :: GraphState </span><a href="#local-6989586621679165473"><span class="hs-identifier hs-var">g</span></a></span></span><span> </span><span id="local-6989586621679165472"><span class="annot"><span class="annottext">x :: Map NodeName NodeDef </span><a href="#local-6989586621679165472"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><span class="annottext">GraphState </span><a href="#local-6989586621679165473"><span class="hs-identifier hs-var">g</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">_renderedNodeDefs :: Map NodeName NodeDef </span><a href="TensorFlow.Build.html#_renderedNodeDefs"><span class="hs-identifier hs-var">_renderedNodeDefs</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Map NodeName NodeDef </span><a href="#local-6989586621679165472"><span class="hs-identifier hs-var">x</span></a></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span id="line-165"></span><span> </span><span id="line-166"></span><span class="annot"><a href="TensorFlow.Build.html#nodeBuffer"><span class="hs-identifier hs-type">nodeBuffer</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Lens'</span></span><span> </span><span class="annot"><a href="TensorFlow.Build.html#GraphState"><span class="hs-identifier hs-type">GraphState</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="hs-identifier hs-type">NodeDef</span></span><span class="hs-special">]</span><span> </span><span id="line-167"></span><span id="nodeBuffer"><span class="annot"><span class="annottext">nodeBuffer :: LensLike' f GraphState [NodeDef] </span><a href="TensorFlow.Build.html#nodeBuffer"><span class="hs-identifier hs-var hs-var">nodeBuffer</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(GraphState -> [NodeDef]) -> (GraphState -> [NodeDef] -> GraphState) -> Lens GraphState GraphState [NodeDef] [NodeDef] forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b </span><span class="hs-identifier hs-var">lens</span></span><span> </span><span class="annot"><span class="annottext">GraphState -> [NodeDef] </span><a href="TensorFlow.Build.html#_nodeBuffer"><span class="hs-identifier hs-var hs-var">_nodeBuffer</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span id="local-6989586621679165470"><span class="annot"><span class="annottext">g :: GraphState </span><a href="#local-6989586621679165470"><span class="hs-identifier hs-var">g</span></a></span></span><span> </span><span id="local-6989586621679165469"><span class="annot"><span class="annottext">x :: [NodeDef] </span><a href="#local-6989586621679165469"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><span class="annottext">GraphState </span><a href="#local-6989586621679165470"><span class="hs-identifier hs-var">g</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">_nodeBuffer :: [NodeDef] </span><a href="TensorFlow.Build.html#_nodeBuffer"><span class="hs-identifier hs-var">_nodeBuffer</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[NodeDef] </span><a href="#local-6989586621679165469"><span class="hs-identifier hs-var">x</span></a></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span id="line-168"></span><span> </span><span id="line-169"></span><span class="annot"><a href="TensorFlow.Build.html#nextUnique"><span class="hs-identifier hs-type">nextUnique</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Lens'</span></span><span> </span><span class="annot"><a href="TensorFlow.Build.html#GraphState"><span class="hs-identifier hs-type">GraphState</span></a></span><span> </span><span class="annot"><a href="TensorFlow.Build.html#Unique"><span class="hs-identifier hs-type">Unique</span></a></span><span> </span><span id="line-170"></span><span id="nextUnique"><span class="annot"><span class="annottext">nextUnique :: LensLike' f GraphState Unique </span><a href="TensorFlow.Build.html#nextUnique"><span class="hs-identifier hs-var hs-var">nextUnique</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(GraphState -> Unique) -> (GraphState -> Unique -> GraphState) -> Lens GraphState GraphState Unique Unique forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b </span><span class="hs-identifier hs-var">lens</span></span><span> </span><span class="annot"><span class="annottext">GraphState -> Unique </span><a href="TensorFlow.Build.html#_nextUnique"><span class="hs-identifier hs-var hs-var">_nextUnique</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span id="local-6989586621679165467"><span class="annot"><span class="annottext">g :: GraphState </span><a href="#local-6989586621679165467"><span class="hs-identifier hs-var">g</span></a></span></span><span> </span><span id="local-6989586621679165466"><span class="annot"><span class="annottext">x :: Unique </span><a href="#local-6989586621679165466"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><span class="annottext">GraphState </span><a href="#local-6989586621679165467"><span class="hs-identifier hs-var">g</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">_nextUnique :: Unique </span><a href="TensorFlow.Build.html#_nextUnique"><span class="hs-identifier hs-var">_nextUnique</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Unique </span><a href="#local-6989586621679165466"><span class="hs-identifier hs-var">x</span></a></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span id="line-171"></span><span> </span><span id="line-172"></span><span class="annot"><a href="TensorFlow.Build.html#defaultDevice"><span class="hs-identifier hs-type">defaultDevice</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Lens'</span></span><span> </span><span class="annot"><a href="TensorFlow.Build.html#GraphState"><span class="hs-identifier hs-type">GraphState</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier hs-type">Maybe</span></span><span> </span><span class="annot"><a href="TensorFlow.Output.html#Device"><span class="hs-identifier hs-type">Device</span></a></span><span class="hs-special">)</span><span> </span><span id="line-173"></span><span id="defaultDevice"><span class="annot"><span class="annottext">defaultDevice :: LensLike' f GraphState (Maybe Device) </span><a href="TensorFlow.Build.html#defaultDevice"><span class="hs-identifier hs-var hs-var">defaultDevice</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(GraphState -> Maybe Device) -> (GraphState -> Maybe Device -> GraphState) -> Lens GraphState GraphState (Maybe Device) (Maybe Device) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b </span><span class="hs-identifier hs-var">lens</span></span><span> </span><span class="annot"><span class="annottext">GraphState -> Maybe Device </span><a href="TensorFlow.Build.html#_defaultDevice"><span class="hs-identifier hs-var hs-var">_defaultDevice</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span id="local-6989586621679165464"><span class="annot"><span class="annottext">g :: GraphState </span><a href="#local-6989586621679165464"><span class="hs-identifier hs-var">g</span></a></span></span><span> </span><span id="local-6989586621679165463"><span class="annot"><span class="annottext">x :: Maybe Device </span><a href="#local-6989586621679165463"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><span class="annottext">GraphState </span><a href="#local-6989586621679165464"><span class="hs-identifier hs-var">g</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">_defaultDevice :: Maybe Device </span><a href="TensorFlow.Build.html#_defaultDevice"><span class="hs-identifier hs-var">_defaultDevice</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe Device </span><a href="#local-6989586621679165463"><span class="hs-identifier hs-var">x</span></a></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span id="line-174"></span><span> </span><span id="line-175"></span><span class="annot"><a href="TensorFlow.Build.html#currentScope"><span class="hs-identifier hs-type">currentScope</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Lens'</span></span><span> </span><span class="annot"><a href="TensorFlow.Build.html#GraphState"><span class="hs-identifier hs-type">GraphState</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="TensorFlow.Build.html#Scope"><span class="hs-identifier hs-type">Scope</span></a></span><span class="hs-special">]</span><span> </span><span id="line-176"></span><span id="currentScope"><span class="annot"><span class="annottext">currentScope :: LensLike' f GraphState [Scope] </span><a href="TensorFlow.Build.html#currentScope"><span class="hs-identifier hs-var hs-var">currentScope</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(GraphState -> [Scope]) -> (GraphState -> [Scope] -> GraphState) -> Lens GraphState GraphState [Scope] [Scope] forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b </span><span class="hs-identifier hs-var">lens</span></span><span> </span><span class="annot"><span class="annottext">GraphState -> [Scope] </span><a href="TensorFlow.Build.html#_currentScope"><span class="hs-identifier hs-var hs-var">_currentScope</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span id="local-6989586621679165461"><span class="annot"><span class="annottext">g :: GraphState </span><a href="#local-6989586621679165461"><span class="hs-identifier hs-var">g</span></a></span></span><span> </span><span id="local-6989586621679165460"><span class="annot"><span class="annottext">x :: [Scope] </span><a href="#local-6989586621679165460"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><span class="annottext">GraphState </span><a href="#local-6989586621679165461"><span class="hs-identifier hs-var">g</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">_currentScope :: [Scope] </span><a href="TensorFlow.Build.html#_currentScope"><span class="hs-identifier hs-var">_currentScope</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Scope] </span><a href="#local-6989586621679165460"><span class="hs-identifier hs-var">x</span></a></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span id="line-177"></span><span> </span><span id="line-178"></span><span class="annot"><a href="TensorFlow.Build.html#defaultControlInputs"><span class="hs-identifier hs-type">defaultControlInputs</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Lens'</span></span><span> </span><span class="annot"><a href="TensorFlow.Build.html#GraphState"><span class="hs-identifier hs-type">GraphState</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier hs-type">Set</span></span><span> </span><span class="annot"><a href="TensorFlow.Output.html#NodeName"><span class="hs-identifier hs-type">NodeName</span></a></span><span class="hs-special">)</span><span> </span><span id="line-179"></span><span id="defaultControlInputs"><span class="annot"><span class="annottext">defaultControlInputs :: LensLike' f GraphState (Set NodeName) </span><a href="TensorFlow.Build.html#defaultControlInputs"><span class="hs-identifier hs-var hs-var">defaultControlInputs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(GraphState -> Set NodeName) -> (GraphState -> Set NodeName -> GraphState) -> Lens GraphState GraphState (Set NodeName) (Set NodeName) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b </span><span class="hs-identifier hs-var">lens</span></span><span> </span><span class="annot"><span class="annottext">GraphState -> Set NodeName </span><a href="TensorFlow.Build.html#_defaultControlInputs"><span class="hs-identifier hs-var hs-var">_defaultControlInputs</span></a></span><span> </span><span id="line-180"></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span id="local-6989586621679165458"><span class="annot"><span class="annottext">g :: GraphState </span><a href="#local-6989586621679165458"><span class="hs-identifier hs-var">g</span></a></span></span><span> </span><span id="local-6989586621679165457"><span class="annot"><span class="annottext">x :: Set NodeName </span><a href="#local-6989586621679165457"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><span class="annottext">GraphState </span><a href="#local-6989586621679165458"><span class="hs-identifier hs-var">g</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">_defaultControlInputs :: Set NodeName </span><a href="TensorFlow.Build.html#_defaultControlInputs"><span class="hs-identifier hs-var">_defaultControlInputs</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Set NodeName </span><a href="#local-6989586621679165457"><span class="hs-identifier hs-var">x</span></a></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span id="line-181"></span><span> </span><span id="line-182"></span><span class="annot"><a href="TensorFlow.Build.html#initializationNodes"><span class="hs-identifier hs-type">initializationNodes</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Lens'</span></span><span> </span><span class="annot"><a href="TensorFlow.Build.html#GraphState"><span class="hs-identifier hs-type">GraphState</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="TensorFlow.Output.html#NodeName"><span class="hs-identifier hs-type">NodeName</span></a></span><span class="hs-special">]</span><span> </span><span id="line-183"></span><span id="initializationNodes"><span class="annot"><span class="annottext">initializationNodes :: LensLike' f GraphState [NodeName] </span><a href="TensorFlow.Build.html#initializationNodes"><span class="hs-identifier hs-var hs-var">initializationNodes</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(GraphState -> [NodeName]) -> (GraphState -> [NodeName] -> GraphState) -> Lens GraphState GraphState [NodeName] [NodeName] forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b </span><span class="hs-identifier hs-var">lens</span></span><span> </span><span class="annot"><span class="annottext">GraphState -> [NodeName] </span><a href="TensorFlow.Build.html#_initializationNodes"><span class="hs-identifier hs-var hs-var">_initializationNodes</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span id="local-6989586621679165455"><span class="annot"><span class="annottext">g :: GraphState </span><a href="#local-6989586621679165455"><span class="hs-identifier hs-var">g</span></a></span></span><span> </span><span id="local-6989586621679165454"><span class="annot"><span class="annottext">x :: [NodeName] </span><a href="#local-6989586621679165454"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><span class="annottext">GraphState </span><a href="#local-6989586621679165455"><span class="hs-identifier hs-var">g</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">_initializationNodes :: [NodeName] </span><a href="TensorFlow.Build.html#_initializationNodes"><span class="hs-identifier hs-var">_initializationNodes</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[NodeName] </span><a href="#local-6989586621679165454"><span class="hs-identifier hs-var">x</span></a></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span id="line-184"></span><span> </span><span id="line-185"></span><span class="annot"><a href="TensorFlow.Build.html#summaries"><span class="hs-identifier hs-type">summaries</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Lens'</span></span><span> </span><span class="annot"><a href="TensorFlow.Build.html#GraphState"><span class="hs-identifier hs-type">GraphState</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="TensorFlow.Output.html#Output"><span class="hs-identifier hs-type">Output</span></a></span><span class="hs-special">]</span><span> </span><span id="line-186"></span><span id="summaries"><span class="annot"><span class="annottext">summaries :: LensLike' f GraphState [Output] </span><a href="TensorFlow.Build.html#summaries"><span class="hs-identifier hs-var hs-var">summaries</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(GraphState -> [Output]) -> (GraphState -> [Output] -> GraphState) -> Lens GraphState GraphState [Output] [Output] forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b </span><span class="hs-identifier hs-var">lens</span></span><span> </span><span class="annot"><span class="annottext">GraphState -> [Output] </span><a href="TensorFlow.Build.html#_summaries"><span class="hs-identifier hs-var hs-var">_summaries</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span id="local-6989586621679165453"><span class="annot"><span class="annottext">g :: GraphState </span><a href="#local-6989586621679165453"><span class="hs-identifier hs-var">g</span></a></span></span><span> </span><span id="local-6989586621679165452"><span class="annot"><span class="annottext">x :: [Output] </span><a href="#local-6989586621679165452"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><span class="annottext">GraphState </span><a href="#local-6989586621679165453"><span class="hs-identifier hs-var">g</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">_summaries :: [Output] </span><a href="TensorFlow.Build.html#_summaries"><span class="hs-identifier hs-var">_summaries</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Output] </span><a href="#local-6989586621679165452"><span class="hs-identifier hs-var">x</span></a></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span id="line-187"></span><span> </span><span id="line-188"></span><span class="hs-comment">-- | An action for building nodes in a TensorFlow graph.</span><span> </span><span id="line-189"></span><span class="hs-comment">-- Used to manage build state internally as part of the @Session@ monad.</span><span> </span><span id="line-190"></span><span class="hs-keyword">newtype</span><span> </span><span id="BuildT"><span class="annot"><a href="TensorFlow.Build.html#BuildT"><span class="hs-identifier hs-var">BuildT</span></a></span></span><span> </span><span id="local-6989586621679165782"><span class="annot"><a href="#local-6989586621679165782"><span class="hs-identifier hs-type">m</span></a></span></span><span> </span><span id="local-6989586621679165781"><span class="annot"><a href="#local-6989586621679165781"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="BuildT"><span class="annot"><a href="TensorFlow.Build.html#BuildT"><span class="hs-identifier hs-var">BuildT</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier hs-type">StateT</span></span><span> </span><span class="annot"><a href="TensorFlow.Build.html#GraphState"><span class="hs-identifier hs-type">GraphState</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165782"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165781"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span id="line-191"></span><span> </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679165447"><span id="local-6989586621679165449"><span class="annot"><span class="annottext">a -> BuildT m b -> BuildT m a (a -> b) -> BuildT m a -> BuildT m b (forall a b. (a -> b) -> BuildT m a -> BuildT m b) -> (forall a b. a -> BuildT m b -> BuildT m a) -> Functor (BuildT m) forall a b. a -> BuildT m b -> BuildT m a forall a b. (a -> b) -> BuildT m a -> BuildT m b forall (m :: * -> *) a b. Functor m => a -> BuildT m b -> BuildT m a forall (m :: * -> *) a b. Functor m => (a -> b) -> BuildT m a -> BuildT m b forall (f :: * -> *). (forall a b. (a -> b) -> f a -> f b) -> (forall a b. a -> f b -> f a) -> Functor f <$ :: a -> BuildT m b -> BuildT m a $c<$ :: forall (m :: * -> *) a b. Functor m => a -> BuildT m b -> BuildT m a fmap :: (a -> b) -> BuildT m a -> BuildT m b $cfmap :: forall (m :: * -> *) a b. Functor m => (a -> b) -> BuildT m a -> BuildT m b </span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var">Functor</span></span></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621679165435"><span id="local-6989586621679165437"><span id="local-6989586621679165439"><span id="local-6989586621679165441"><span id="local-6989586621679165443"><span class="annot"><span class="annottext">Functor (BuildT m) a -> BuildT m a Functor (BuildT m) => (forall a. a -> BuildT m a) -> (forall a b. BuildT m (a -> b) -> BuildT m a -> BuildT m b) -> (forall a b c. (a -> b -> c) -> BuildT m a -> BuildT m b -> BuildT m c) -> (forall a b. BuildT m a -> BuildT m b -> BuildT m b) -> (forall a b. BuildT m a -> BuildT m b -> BuildT m a) -> Applicative (BuildT m) BuildT m a -> BuildT m b -> BuildT m b BuildT m a -> BuildT m b -> BuildT m a BuildT m (a -> b) -> BuildT m a -> BuildT m b (a -> b -> c) -> BuildT m a -> BuildT m b -> BuildT m c forall a. a -> BuildT m a forall a b. BuildT m a -> BuildT m b -> BuildT m a forall a b. BuildT m a -> BuildT m b -> BuildT m b forall a b. BuildT m (a -> b) -> BuildT m a -> BuildT m b forall a b c. (a -> b -> c) -> BuildT m a -> BuildT m b -> BuildT m c forall (m :: * -> *). Monad m => Functor (BuildT m) forall (m :: * -> *) a. Monad m => a -> BuildT m a forall (m :: * -> *) a b. Monad m => BuildT m a -> BuildT m b -> BuildT m a forall (m :: * -> *) a b. Monad m => BuildT m a -> BuildT m b -> BuildT m b forall (m :: * -> *) a b. Monad m => BuildT m (a -> b) -> BuildT m a -> BuildT m b forall (m :: * -> *) a b c. Monad m => (a -> b -> c) -> BuildT m a -> BuildT m b -> BuildT m c forall (f :: * -> *). Functor f => (forall a. a -> f a) -> (forall a b. f (a -> b) -> f a -> f b) -> (forall a b c. (a -> b -> c) -> f a -> f b -> f c) -> (forall a b. f a -> f b -> f b) -> (forall a b. f a -> f b -> f a) -> Applicative f <* :: BuildT m a -> BuildT m b -> BuildT m a $c<* :: forall (m :: * -> *) a b. Monad m => BuildT m a -> BuildT m b -> BuildT m a *> :: BuildT m a -> BuildT m b -> BuildT m b $c*> :: forall (m :: * -> *) a b. Monad m => BuildT m a -> BuildT m b -> BuildT m b liftA2 :: (a -> b -> c) -> BuildT m a -> BuildT m b -> BuildT m c $cliftA2 :: forall (m :: * -> *) a b c. Monad m => (a -> b -> c) -> BuildT m a -> BuildT m b -> BuildT m c <*> :: BuildT m (a -> b) -> BuildT m a -> BuildT m b $c<*> :: forall (m :: * -> *) a b. Monad m => BuildT m (a -> b) -> BuildT m a -> BuildT m b pure :: a -> BuildT m a $cpure :: forall (m :: * -> *) a. Monad m => a -> BuildT m a $cp1Applicative :: forall (m :: * -> *). Monad m => Functor (BuildT m) </span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Applicative</span></span></span></span></span></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621679165427"><span id="local-6989586621679165429"><span id="local-6989586621679165431"><span class="annot"><span class="annottext">Applicative (BuildT m) a -> BuildT m a Applicative (BuildT m) => (forall a b. BuildT m a -> (a -> BuildT m b) -> BuildT m b) -> (forall a b. BuildT m a -> BuildT m b -> BuildT m b) -> (forall a. a -> BuildT m a) -> Monad (BuildT m) BuildT m a -> (a -> BuildT m b) -> BuildT m b BuildT m a -> BuildT m b -> BuildT m b forall a. a -> BuildT m a forall a b. BuildT m a -> BuildT m b -> BuildT m b forall a b. BuildT m a -> (a -> BuildT m b) -> BuildT m b forall (m :: * -> *). Monad m => Applicative (BuildT m) forall (m :: * -> *) a. Monad m => a -> BuildT m a forall (m :: * -> *) a b. Monad m => BuildT m a -> BuildT m b -> BuildT m b forall (m :: * -> *) a b. Monad m => BuildT m a -> (a -> BuildT m b) -> BuildT m b forall (m :: * -> *). Applicative m => (forall a b. m a -> (a -> m b) -> m b) -> (forall a b. m a -> m b -> m b) -> (forall a. a -> m a) -> Monad m return :: a -> BuildT m a $creturn :: forall (m :: * -> *) a. Monad m => a -> BuildT m a >> :: BuildT m a -> BuildT m b -> BuildT m b $c>> :: forall (m :: * -> *) a b. Monad m => BuildT m a -> BuildT m b -> BuildT m b >>= :: BuildT m a -> (a -> BuildT m b) -> BuildT m b $c>>= :: forall (m :: * -> *) a b. Monad m => BuildT m a -> (a -> BuildT m b) -> BuildT m b $cp1Monad :: forall (m :: * -> *). Monad m => Applicative (BuildT m) </span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Monad</span></span></span></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621679165423"><span class="annot"><span class="annottext">Monad (BuildT m) Monad (BuildT m) => (forall a. IO a -> BuildT m a) -> MonadIO (BuildT m) IO a -> BuildT m a forall a. IO a -> BuildT m a forall (m :: * -> *). Monad m => (forall a. IO a -> m a) -> MonadIO m forall (m :: * -> *). MonadIO m => Monad (BuildT m) forall (m :: * -> *) a. MonadIO m => IO a -> BuildT m a liftIO :: IO a -> BuildT m a $cliftIO :: forall (m :: * -> *) a. MonadIO m => IO a -> BuildT m a $cp1MonadIO :: forall (m :: * -> *). MonadIO m => Monad (BuildT m) </span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var">MonadIO</span></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621679165420"><span class="annot"><span class="annottext">m a -> BuildT m a (forall (m :: * -> *) a. Monad m => m a -> BuildT m a) -> MonadTrans BuildT forall (m :: * -> *) a. Monad m => m a -> BuildT m a forall (t :: (* -> *) -> * -> *). (forall (m :: * -> *) a. Monad m => m a -> t m a) -> MonadTrans t lift :: m a -> BuildT m a $clift :: forall (m :: * -> *) a. Monad m => m a -> BuildT m a </span><span class="hs-identifier hs-var hs-var hs-var hs-var">MonadTrans</span></span></span><span class="hs-special">,</span><span> </span><span id="line-192"></span><span> </span><span id="local-6989586621679165412"><span id="local-6989586621679165414"><span id="local-6989586621679165416"><span class="annot"><span class="hs-identifier hs-type">MonadState</span></span><span> </span><span class="annot"><a href="TensorFlow.Build.html#GraphState"><span class="hs-identifier hs-type">GraphState</span></a></span></span></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621679165408"><span class="annot"><span class="annottext">Monad (BuildT m) e -> BuildT m a Monad (BuildT m) => (forall e a. Exception e => e -> BuildT m a) -> MonadThrow (BuildT m) forall e a. Exception e => e -> BuildT m a forall (m :: * -> *). Monad m => (forall e a. Exception e => e -> m a) -> MonadThrow m forall (m :: * -> *). MonadThrow m => Monad (BuildT m) forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> BuildT m a throwM :: e -> BuildT m a $cthrowM :: forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> BuildT m a $cp1MonadThrow :: forall (m :: * -> *). MonadThrow m => Monad (BuildT m) </span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var">MonadThrow</span></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621679165404"><span class="annot"><span class="annottext">MonadThrow (BuildT m) MonadThrow (BuildT m) => (forall e a. Exception e => BuildT m a -> (e -> BuildT m a) -> BuildT m a) -> MonadCatch (BuildT m) BuildT m a -> (e -> BuildT m a) -> BuildT m a forall e a. Exception e => BuildT m a -> (e -> BuildT m a) -> BuildT m a forall (m :: * -> *). MonadCatch m => MonadThrow (BuildT m) forall (m :: * -> *) e a. (MonadCatch m, Exception e) => BuildT m a -> (e -> BuildT m a) -> BuildT m a forall (m :: * -> *). MonadThrow m => (forall e a. Exception e => m a -> (e -> m a) -> m a) -> MonadCatch m catch :: BuildT m a -> (e -> BuildT m a) -> BuildT m a $ccatch :: forall (m :: * -> *) e a. (MonadCatch m, Exception e) => BuildT m a -> (e -> BuildT m a) -> BuildT m a $cp1MonadCatch :: forall (m :: * -> *). MonadCatch m => MonadThrow (BuildT m) </span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var">MonadCatch</span></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621679165396"><span id="local-6989586621679165398"><span id="local-6989586621679165400"><span class="annot"><span class="annottext">MonadCatch (BuildT m) MonadCatch (BuildT m) => (forall b. ((forall a. BuildT m a -> BuildT m a) -> BuildT m b) -> BuildT m b) -> (forall b. ((forall a. BuildT m a -> BuildT m a) -> BuildT m b) -> BuildT m b) -> (forall a b c. BuildT m a -> (a -> ExitCase b -> BuildT m c) -> (a -> BuildT m b) -> BuildT m (b, c)) -> MonadMask (BuildT m) BuildT m a -> (a -> ExitCase b -> BuildT m c) -> (a -> BuildT m b) -> BuildT m (b, c) ((forall a. BuildT m a -> BuildT m a) -> BuildT m b) -> BuildT m b ((forall a. BuildT m a -> BuildT m a) -> BuildT m b) -> BuildT m b forall b. ((forall a. BuildT m a -> BuildT m a) -> BuildT m b) -> BuildT m b forall a b c. BuildT m a -> (a -> ExitCase b -> BuildT m c) -> (a -> BuildT m b) -> BuildT m (b, c) forall (m :: * -> *). MonadCatch m => (forall b. ((forall a. m a -> m a) -> m b) -> m b) -> (forall b. ((forall a. m a -> m a) -> m b) -> m b) -> (forall a b c. m a -> (a -> ExitCase b -> m c) -> (a -> m b) -> m (b, c)) -> MonadMask m forall (m :: * -> *). MonadMask m => MonadCatch (BuildT m) forall (m :: * -> *) b. MonadMask m => ((forall a. BuildT m a -> BuildT m a) -> BuildT m b) -> BuildT m b forall (m :: * -> *) a b c. MonadMask m => BuildT m a -> (a -> ExitCase b -> BuildT m c) -> (a -> BuildT m b) -> BuildT m (b, c) generalBracket :: BuildT m a -> (a -> ExitCase b -> BuildT m c) -> (a -> BuildT m b) -> BuildT m (b, c) $cgeneralBracket :: forall (m :: * -> *) a b c. MonadMask m => BuildT m a -> (a -> ExitCase b -> BuildT m c) -> (a -> BuildT m b) -> BuildT m (b, c) uninterruptibleMask :: ((forall a. BuildT m a -> BuildT m a) -> BuildT m b) -> BuildT m b $cuninterruptibleMask :: forall (m :: * -> *) b. MonadMask m => ((forall a. BuildT m a -> BuildT m a) -> BuildT m b) -> BuildT m b mask :: ((forall a. BuildT m a -> BuildT m a) -> BuildT m b) -> BuildT m b $cmask :: forall (m :: * -> *) b. MonadMask m => ((forall a. BuildT m a -> BuildT m a) -> BuildT m b) -> BuildT m b $cp1MonadMask :: forall (m :: * -> *). MonadMask m => MonadCatch (BuildT m) </span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">MonadMask</span></span></span></span></span><span class="hs-special">,</span><span> </span><span id="line-193"></span><span> </span><span id="local-6989586621679165392"><span class="annot"><span class="annottext">Monad (BuildT m) Monad (BuildT m) => (forall a. (a -> BuildT m a) -> BuildT m a) -> MonadFix (BuildT m) (a -> BuildT m a) -> BuildT m a forall a. (a -> BuildT m a) -> BuildT m a forall (m :: * -> *). Monad m => (forall a. (a -> m a) -> m a) -> MonadFix m forall (m :: * -> *). MonadFix m => Monad (BuildT m) forall (m :: * -> *) a. MonadFix m => (a -> BuildT m a) -> BuildT m a mfix :: (a -> BuildT m a) -> BuildT m a $cmfix :: forall (m :: * -> *) a. MonadFix m => (a -> BuildT m a) -> BuildT m a $cp1MonadFix :: forall (m :: * -> *). MonadFix m => Monad (BuildT m) </span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var">MonadFix</span></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621679165388"><span class="annot"><span class="annottext">Monad (BuildT m) Monad (BuildT m) => (forall a. String -> BuildT m a) -> MonadFail (BuildT m) String -> BuildT m a forall a. String -> BuildT m a forall (m :: * -> *). Monad m => (forall a. String -> m a) -> MonadFail m forall (m :: * -> *). MonadFail m => Monad (BuildT m) forall (m :: * -> *) a. MonadFail m => String -> BuildT m a fail :: String -> BuildT m a $cfail :: forall (m :: * -> *) a. MonadFail m => String -> BuildT m a $cp1MonadFail :: forall (m :: * -> *). MonadFail m => Monad (BuildT m) </span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var">MonadFail</span></span></span><span class="hs-special">)</span><span> </span><span id="line-194"></span><span> </span><span id="line-195"></span><span class="hs-comment">-- | An action for building nodes in a TensorFlow graph.</span><span> </span><span id="line-196"></span><span class="hs-keyword">type</span><span> </span><span id="Build"><span class="annot"><a href="TensorFlow.Build.html#Build"><span class="hs-identifier hs-var">Build</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#BuildT"><span class="hs-identifier hs-type">BuildT</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Identity</span></span><span> </span><span id="line-197"></span><span> </span><span id="line-198"></span><span class="hs-comment">-- | This is Control.Monad.Morph.hoist sans the dependency.</span><span> </span><span id="line-199"></span><span id="local-6989586621679165753"><span id="local-6989586621679165754"><span id="local-6989586621679165755"><span class="annot"><a href="TensorFlow.Build.html#hoistBuildT"><span class="hs-identifier hs-type">hoistBuildT</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679165786"><span class="annot"><a href="#local-6989586621679165786"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-operator">.</span><span> </span><span class="annot"><a href="#local-6989586621679165755"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165786"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="#local-6989586621679165754"><span class="hs-identifier hs-type">n</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165786"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="TensorFlow.Build.html#BuildT"><span class="hs-identifier hs-type">BuildT</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165755"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165753"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="TensorFlow.Build.html#BuildT"><span class="hs-identifier hs-type">BuildT</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165754"><span class="hs-identifier hs-type">n</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165753"><span class="hs-identifier hs-type">b</span></a></span></span></span></span><span> </span><span id="line-200"></span><span id="hoistBuildT"><span class="annot"><span class="annottext">hoistBuildT :: (forall a. m a -> n a) -> BuildT m b -> BuildT n b </span><a href="TensorFlow.Build.html#hoistBuildT"><span class="hs-identifier hs-var hs-var">hoistBuildT</span></a></span></span><span> </span><span id="local-6989586621679165386"><span class="annot"><span class="annottext">f :: forall a. m a -> n a </span><a href="#local-6989586621679165386"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="TensorFlow.Build.html#BuildT"><span class="hs-identifier hs-type">BuildT</span></a></span><span> </span><span id="local-6989586621679165385"><span class="annot"><span class="annottext">m :: StateT GraphState m b </span><a href="#local-6989586621679165385"><span class="hs-identifier hs-var">m</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">StateT GraphState n b -> BuildT n b forall (m :: * -> *) a. StateT GraphState m a -> BuildT m a </span><a href="TensorFlow.Build.html#BuildT"><span class="hs-identifier hs-var">BuildT</span></a></span><span> </span><span class="annot"><span class="annottext">(StateT GraphState n b -> BuildT n b) -> StateT GraphState n b -> BuildT n b forall a b. (a -> b) -> a -> b </span><span class="hs-operator hs-var">$</span></span><span> </span><span class="annot"><span class="annottext">(m (b, GraphState) -> n (b, GraphState)) -> StateT GraphState m b -> StateT GraphState n b forall (m :: * -> *) a s (n :: * -> *) b. (m (a, s) -> n (b, s)) -> StateT s m a -> StateT s n b </span><span class="hs-identifier hs-var">mapStateT</span></span><span> </span><span class="annot"><span class="annottext">m (b, GraphState) -> n (b, GraphState) forall a. m a -> n a </span><a href="#local-6989586621679165386"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">StateT GraphState m b </span><a href="#local-6989586621679165385"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span id="line-201"></span><span> </span><span id="line-202"></span><span id="local-6989586621679165706"><span id="local-6989586621679165707"><span class="annot"><a href="TensorFlow.Build.html#runBuildT"><span class="hs-identifier hs-type">runBuildT</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#BuildT"><span class="hs-identifier hs-type">BuildT</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165707"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165706"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="#local-6989586621679165707"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679165706"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#GraphState"><span class="hs-identifier hs-type">GraphState</span></a></span><span class="hs-special">)</span></span></span><span> </span><span id="line-203"></span><span id="runBuildT"><span class="annot"><span class="annottext">runBuildT :: BuildT m a -> m (a, GraphState) </span><a href="TensorFlow.Build.html#runBuildT"><span class="hs-identifier hs-var hs-var">runBuildT</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="TensorFlow.Build.html#BuildT"><span class="hs-identifier hs-type">BuildT</span></a></span><span> </span><span id="local-6989586621679165384"><span class="annot"><span class="annottext">f :: StateT GraphState m a </span><a href="#local-6989586621679165384"><span class="hs-identifier hs-var">f</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">StateT GraphState m a -> GraphState -> m (a, GraphState) forall s (m :: * -> *) a. StateT s m a -> s -> m (a, s) </span><span class="hs-identifier hs-var hs-var">runStateT</span></span><span> </span><span class="annot"><span class="annottext">StateT GraphState m a </span><a href="#local-6989586621679165384"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">GraphState </span><a href="TensorFlow.Build.html#initGraphState"><span class="hs-identifier hs-var">initGraphState</span></a></span><span> </span><span id="line-204"></span><span> </span><span id="line-205"></span><span id="local-6989586621679165381"><span id="local-6989586621679165382"><span class="annot"><a href="TensorFlow.Build.html#evalBuildT"><span class="hs-identifier hs-type">evalBuildT</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Monad</span></span><span> </span><span class="annot"><a href="#local-6989586621679165382"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="hs-glyph">=></span><span> </span><span class="annot"><a href="TensorFlow.Build.html#BuildT"><span class="hs-identifier hs-type">BuildT</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165382"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165381"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="#local-6989586621679165382"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165381"><span class="hs-identifier hs-type">a</span></a></span></span></span><span> </span><span id="line-206"></span><span id="evalBuildT"><span class="annot"><span class="annottext">evalBuildT :: BuildT m a -> m a </span><a href="TensorFlow.Build.html#evalBuildT"><span class="hs-identifier hs-var hs-var">evalBuildT</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="TensorFlow.Build.html#BuildT"><span class="hs-identifier hs-type">BuildT</span></a></span><span> </span><span id="local-6989586621679165380"><span class="annot"><span class="annottext">f :: StateT GraphState m a </span><a href="#local-6989586621679165380"><span class="hs-identifier hs-var">f</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">StateT GraphState m a -> GraphState -> m a forall (m :: * -> *) s a. Monad m => StateT s m a -> s -> m a </span><span class="hs-identifier hs-var">evalStateT</span></span><span> </span><span class="annot"><span class="annottext">StateT GraphState m a </span><a href="#local-6989586621679165380"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">GraphState </span><a href="TensorFlow.Build.html#initGraphState"><span class="hs-identifier hs-var">initGraphState</span></a></span><span> </span><span id="line-207"></span><span> </span><span id="line-208"></span><span class="hs-comment">-- | Lift a 'Build' action into a monad, including any explicit op renderings.</span><span> </span><span id="line-209"></span><span class="hs-keyword">class</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Monad</span></span><span> </span><span class="annot"><a href="#local-6989586621679165758"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="hs-glyph">=></span><span> </span><span id="MonadBuild"><span class="annot"><a href="TensorFlow.Build.html#MonadBuild"><span class="hs-identifier hs-var">MonadBuild</span></a></span></span><span> </span><span id="local-6989586621679165758"><span class="annot"><a href="#local-6989586621679165758"><span class="hs-identifier hs-type">m</span></a></span></span><span> </span><span class="hs-keyword">where</span><span> </span><span id="line-210"></span><span> </span><span id="local-6989586621679165761"><span id="build"><span class="annot"><a href="TensorFlow.Build.html#build"><span class="hs-identifier hs-type">build</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#Build"><span class="hs-identifier hs-type">Build</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165761"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="#local-6989586621679165758"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165761"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span id="line-211"></span><span> </span><span id="line-212"></span><span id="local-6989586621679165378"><span class="hs-keyword">instance</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Monad</span></span><span> </span><span class="annot"><a href="#local-6989586621679165378"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="hs-glyph">=></span><span> </span><span class="annot"><a href="TensorFlow.Build.html#MonadBuild"><span class="hs-identifier hs-type">MonadBuild</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="TensorFlow.Build.html#BuildT"><span class="hs-identifier hs-type">BuildT</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165378"><span class="hs-identifier hs-type">m</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span> </span><span id="line-213"></span><span> </span><span id="local-6989586621679165374"><span class="annot"><span class="annottext">build :: Build a -> BuildT m a </span><a href="#local-6989586621679165374"><span class="hs-identifier hs-var hs-var hs-var hs-var">build</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(forall a. Identity a -> m a) -> Build a -> BuildT m a forall (m :: * -> *) (n :: * -> *) b. (forall a. m a -> n a) -> BuildT m b -> BuildT n b </span><a href="TensorFlow.Build.html#hoistBuildT"><span class="hs-identifier hs-var">hoistBuildT</span></a></span><span> </span><span class="annot"><span class="annottext">((forall a. Identity a -> m a) -> Build a -> BuildT m a) -> (forall a. Identity a -> m a) -> Build a -> BuildT m a forall a b. (a -> b) -> a -> b </span><span class="hs-operator hs-var">$</span></span><span> </span><span class="annot"><span class="annottext">a -> m a forall (m :: * -> *) a. Monad m => a -> m a </span><span class="hs-identifier hs-var">return</span></span><span> </span><span class="annot"><span class="annottext">(a -> m a) -> (Identity a -> a) -> Identity a -> m a forall b c a. (b -> c) -> (a -> b) -> a -> c </span><span class="hs-operator hs-var">.</span></span><span> </span><span class="annot"><span class="annottext">Identity a -> a forall a. Identity a -> a </span><span class="hs-identifier hs-var hs-var">runIdentity</span></span></span><span> </span><span id="line-214"></span><span> </span><span id="line-215"></span><span class="hs-comment">-- | Get all the NodeDefs that have accumulated so far, and clear that buffer.</span><span> </span><span id="line-216"></span><span id="local-6989586621679165372"><span class="annot"><a href="TensorFlow.Build.html#flushNodeBuffer"><span class="hs-identifier hs-type">flushNodeBuffer</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#MonadBuild"><span class="hs-identifier hs-type">MonadBuild</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165372"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="hs-glyph">=></span><span> </span><span class="annot"><a href="#local-6989586621679165372"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="hs-identifier hs-type">NodeDef</span></span><span class="hs-special">]</span></span><span> </span><span id="line-217"></span><span id="flushNodeBuffer"><span class="annot"><span class="annottext">flushNodeBuffer :: m [NodeDef] </span><a href="TensorFlow.Build.html#flushNodeBuffer"><span class="hs-identifier hs-var hs-var">flushNodeBuffer</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Build [NodeDef] -> m [NodeDef] forall (m :: * -> *) a. MonadBuild m => Build a -> m a </span><a href="TensorFlow.Build.html#build"><span class="hs-identifier hs-var">build</span></a></span><span> </span><span class="annot"><span class="annottext">(Build [NodeDef] -> m [NodeDef]) -> Build [NodeDef] -> m [NodeDef] forall a b. (a -> b) -> a -> b </span><span class="hs-operator hs-var">$</span></span><span> </span><span class="hs-keyword">do</span><span> </span><span id="line-218"></span><span> </span><span id="local-6989586621679165371"><span class="annot"><span class="annottext">[NodeDef] </span><a href="#local-6989586621679165371"><span class="hs-identifier hs-var">ns</span></a></span></span><span> </span><span class="hs-glyph"><-</span><span> </span><span class="annot"><span class="annottext">FoldLike [NodeDef] GraphState GraphState [NodeDef] [NodeDef] -> Build [NodeDef] forall s (m :: * -> *) a t b. MonadState s m => FoldLike a s t a b -> m a </span><span class="hs-identifier hs-var">use</span></span><span> </span><span class="annot"><span class="annottext">FoldLike [NodeDef] GraphState GraphState [NodeDef] [NodeDef] Lens GraphState GraphState [NodeDef] [NodeDef] </span><a href="TensorFlow.Build.html#nodeBuffer"><span class="hs-identifier hs-var">nodeBuffer</span></a></span><span> </span><span id="line-219"></span><span> </span><span class="annot"><span class="annottext">Lens GraphState GraphState [NodeDef] [NodeDef] forall (f :: * -> *). Identical f => LensLike' f GraphState [NodeDef] </span><a href="TensorFlow.Build.html#nodeBuffer"><span class="hs-identifier hs-var">nodeBuffer</span></a></span><span> </span><span class="annot"><span class="annottext">(forall (f :: * -> *). Identical f => LensLike' f GraphState [NodeDef]) -> [NodeDef] -> BuildT Identity () forall s (m :: * -> *) a b. MonadState s m => Setter s s a b -> b -> m () </span><span class="hs-operator hs-var">.=</span></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span id="line-220"></span><span> </span><span class="annot"><span class="annottext">[NodeDef] -> Build [NodeDef] forall (m :: * -> *) a. Monad m => a -> m a </span><span class="hs-identifier hs-var">return</span></span><span> </span><span class="annot"><span class="annottext">[NodeDef] </span><a href="#local-6989586621679165371"><span class="hs-identifier hs-var">ns</span></a></span><span> </span><span id="line-221"></span><span> </span><span id="line-222"></span><span class="hs-comment">-- | Get all the initializers that have accumulated so far, and clear</span><span> </span><span id="line-223"></span><span class="hs-comment">-- that buffer.</span><span> </span><span id="line-224"></span><span id="local-6989586621679165370"><span class="annot"><a href="TensorFlow.Build.html#flushInitializers"><span class="hs-identifier hs-type">flushInitializers</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Monad</span></span><span> </span><span class="annot"><a href="#local-6989586621679165370"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="hs-glyph">=></span><span> </span><span class="annot"><a href="TensorFlow.Build.html#BuildT"><span class="hs-identifier hs-type">BuildT</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165370"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="TensorFlow.Output.html#NodeName"><span class="hs-identifier hs-type">NodeName</span></a></span><span class="hs-special">]</span></span><span> </span><span id="line-225"></span><span id="flushInitializers"><span class="annot"><span class="annottext">flushInitializers :: BuildT m [NodeName] </span><a href="TensorFlow.Build.html#flushInitializers"><span class="hs-identifier hs-var hs-var">flushInitializers</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span> </span><span id="line-226"></span><span> </span><span id="local-6989586621679165369"><span class="annot"><span class="annottext">[NodeName] </span><a href="#local-6989586621679165369"><span class="hs-identifier hs-var">ns</span></a></span></span><span> </span><span class="hs-glyph"><-</span><span> </span><span class="annot"><span class="annottext">FoldLike [NodeName] GraphState GraphState [NodeName] [NodeName] -> BuildT m [NodeName] forall s (m :: * -> *) a t b. MonadState s m => FoldLike a s t a b -> m a </span><span class="hs-identifier hs-var">use</span></span><span> </span><span class="annot"><span class="annottext">FoldLike [NodeName] GraphState GraphState [NodeName] [NodeName] Lens GraphState GraphState [NodeName] [NodeName] </span><a href="TensorFlow.Build.html#initializationNodes"><span class="hs-identifier hs-var">initializationNodes</span></a></span><span> </span><span id="line-227"></span><span> </span><span class="annot"><span class="annottext">Lens GraphState GraphState [NodeName] [NodeName] forall (f :: * -> *). Identical f => LensLike' f GraphState [NodeName] </span><a href="TensorFlow.Build.html#initializationNodes"><span class="hs-identifier hs-var">initializationNodes</span></a></span><span> </span><span class="annot"><span class="annottext">(forall (f :: * -> *). Identical f => LensLike' f GraphState [NodeName]) -> [NodeName] -> BuildT m () forall s (m :: * -> *) a b. MonadState s m => Setter s s a b -> b -> m () </span><span class="hs-operator hs-var">.=</span></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span id="line-228"></span><span> </span><span class="annot"><span class="annottext">[NodeName] -> BuildT m [NodeName] forall (m :: * -> *) a. Monad m => a -> m a </span><span class="hs-identifier hs-var">return</span></span><span> </span><span class="annot"><span class="annottext">[NodeName] </span><a href="#local-6989586621679165369"><span class="hs-identifier hs-var">ns</span></a></span><span> </span><span id="line-229"></span><span> </span><span id="line-230"></span><span class="hs-comment">-- | Registers the given node to be executed before the next</span><span> </span><span id="line-231"></span><span class="hs-comment">-- 'TensorFlow.Session.run'.</span><span> </span><span id="line-232"></span><span id="local-6989586621679165368"><span class="annot"><a href="TensorFlow.Build.html#addInitializer"><span class="hs-identifier hs-type">addInitializer</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#MonadBuild"><span class="hs-identifier hs-type">MonadBuild</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165368"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="hs-glyph">=></span><span> </span><span class="annot"><a href="TensorFlow.Output.html#ControlNode"><span class="hs-identifier hs-type">ControlNode</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="#local-6989586621679165368"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span></span><span> </span><span id="line-233"></span><span id="addInitializer"><span class="annot"><span class="annottext">addInitializer :: ControlNode -> m () </span><a href="TensorFlow.Build.html#addInitializer"><span class="hs-identifier hs-var hs-var">addInitializer</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="TensorFlow.Output.html#ControlNode"><span class="hs-identifier hs-type">ControlNode</span></a></span><span> </span><span id="local-6989586621679165366"><span class="annot"><span class="annottext">i :: NodeName </span><a href="#local-6989586621679165366"><span class="hs-identifier hs-var">i</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuildT Identity () -> m () forall (m :: * -> *) a. MonadBuild m => Build a -> m a </span><a href="TensorFlow.Build.html#build"><span class="hs-identifier hs-var">build</span></a></span><span> </span><span class="annot"><span class="annottext">(BuildT Identity () -> m ()) -> BuildT Identity () -> m () forall a b. (a -> b) -> a -> b </span><span class="hs-operator hs-var">$</span></span><span> </span><span class="annot"><span class="annottext">Lens GraphState GraphState [NodeName] [NodeName] forall (f :: * -> *). Identical f => LensLike' f GraphState [NodeName] </span><a href="TensorFlow.Build.html#initializationNodes"><span class="hs-identifier hs-var">initializationNodes</span></a></span><span> </span><span class="annot"><span class="annottext">(forall (f :: * -> *). Identical f => LensLike' f GraphState [NodeName]) -> ([NodeName] -> [NodeName]) -> BuildT Identity () forall s (m :: * -> *) a b. MonadState s m => Setter s s a b -> (a -> b) -> m () </span><span class="hs-operator hs-var">%=</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">NodeName </span><a href="#local-6989586621679165366"><span class="hs-identifier hs-var">i</span></a></span><span class="annot"><span class="annottext">NodeName -> [NodeName] -> [NodeName] forall a. a -> [a] -> [a] </span><span class="hs-glyph hs-var">:</span></span><span class="hs-special">)</span><span> </span><span id="line-234"></span><span> </span><span id="line-235"></span><span class="hs-comment">-- | Produce a GraphDef proto representation of the nodes that are rendered in</span><span> </span><span id="line-236"></span><span class="hs-comment">-- the given 'Build' action.</span><span> </span><span id="line-237"></span><span id="local-6989586621679165365"><span class="annot"><a href="TensorFlow.Build.html#asGraphDef"><span class="hs-identifier hs-type">asGraphDef</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#Build"><span class="hs-identifier hs-type">Build</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165365"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><span class="hs-identifier hs-type">GraphDef</span></span></span><span> </span><span id="line-238"></span><span id="asGraphDef"><span class="annot"><span class="annottext">asGraphDef :: Build a -> GraphDef </span><a href="TensorFlow.Build.html#asGraphDef"><span class="hs-identifier hs-var hs-var">asGraphDef</span></a></span></span><span> </span><span id="local-6989586621679165364"><span class="annot"><span class="annottext">b :: Build a </span><a href="#local-6989586621679165364"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">GraphDef forall msg. Message msg => msg </span><span class="hs-identifier hs-var">defMessage</span></span><span> </span><span class="annot"><span class="annottext">GraphDef -> (GraphDef -> GraphDef) -> GraphDef forall s t. s -> (s -> t) -> t </span><span class="hs-operator hs-var">&</span></span><span> </span><span class="annot"><span class="annottext">forall (f :: * -> *). Identical f => LensLike' f GraphDef [NodeDef] forall (f :: * -> *) s a. (Functor f, HasField s "node" a) => LensLike' f s a </span><span class="hs-identifier hs-var">node</span></span><span> </span><span class="annot"><span class="annottext">(forall (f :: * -> *). Identical f => LensLike' f GraphDef [NodeDef]) -> [NodeDef] -> GraphDef -> GraphDef forall s t a b. Setter s t a b -> b -> s -> t </span><span class="hs-operator hs-var">.~</span></span><span> </span><span class="annot"><span class="annottext">GraphState </span><a href="#local-6989586621679165363"><span class="hs-identifier hs-var">gs</span></a></span><span> </span><span class="annot"><span class="annottext">GraphState -> FoldLike [NodeDef] GraphState GraphState [NodeDef] [NodeDef] -> [NodeDef] forall s a t b. s -> FoldLike a s t a b -> a </span><span class="hs-operator hs-var">^.</span></span><span> </span><span class="annot"><span class="annottext">FoldLike [NodeDef] GraphState GraphState [NodeDef] [NodeDef] Lens GraphState GraphState [NodeDef] [NodeDef] </span><a href="TensorFlow.Build.html#nodeBuffer"><span class="hs-identifier hs-var">nodeBuffer</span></a></span><span> </span><span id="line-239"></span><span> </span><span class="hs-keyword">where</span><span> </span><span id="line-240"></span><span> </span><span id="local-6989586621679165363"><span class="annot"><span class="annottext">gs :: GraphState </span><a href="#local-6989586621679165363"><span class="hs-identifier hs-var hs-var">gs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a, GraphState) -> GraphState forall a b. (a, b) -> b </span><span class="hs-identifier hs-var">snd</span></span><span> </span><span class="annot"><span class="annottext">((a, GraphState) -> GraphState) -> (a, GraphState) -> GraphState forall a b. (a -> b) -> a -> b </span><span class="hs-operator hs-var">$</span></span><span> </span><span class="annot"><span class="annottext">Identity (a, GraphState) -> (a, GraphState) forall a. Identity a -> a </span><span class="hs-identifier hs-var hs-var">runIdentity</span></span><span> </span><span class="annot"><span class="annottext">(Identity (a, GraphState) -> (a, GraphState)) -> Identity (a, GraphState) -> (a, GraphState) forall a b. (a -> b) -> a -> b </span><span class="hs-operator hs-var">$</span></span><span> </span><span class="annot"><span class="annottext">Build a -> Identity (a, GraphState) forall (m :: * -> *) a. BuildT m a -> m (a, GraphState) </span><a href="TensorFlow.Build.html#runBuildT"><span class="hs-identifier hs-var">runBuildT</span></a></span><span> </span><span class="annot"><span class="annottext">Build a </span><a href="#local-6989586621679165364"><span class="hs-identifier hs-var">b</span></a></span><span> </span><span id="line-241"></span><span> </span><span id="line-242"></span><span class="hs-comment">-- TODO: check against existing nodes for conflicts?</span><span> </span><span id="line-243"></span><span id="local-6989586621679165362"><span class="annot"><a href="TensorFlow.Build.html#addGraphDef"><span class="hs-identifier hs-type">addGraphDef</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#MonadBuild"><span class="hs-identifier hs-type">MonadBuild</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165362"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="hs-glyph">=></span><span> </span><span class="annot"><span class="hs-identifier hs-type">GraphDef</span></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="#local-6989586621679165362"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span></span><span> </span><span id="line-244"></span><span id="addGraphDef"><span class="annot"><span class="annottext">addGraphDef :: GraphDef -> m () </span><a href="TensorFlow.Build.html#addGraphDef"><span class="hs-identifier hs-var hs-var">addGraphDef</span></a></span></span><span> </span><span id="local-6989586621679165361"><span class="annot"><span class="annottext">g :: GraphDef </span><a href="#local-6989586621679165361"><span class="hs-identifier hs-var">g</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BuildT Identity () -> m () forall (m :: * -> *) a. MonadBuild m => Build a -> m a </span><a href="TensorFlow.Build.html#build"><span class="hs-identifier hs-var">build</span></a></span><span> </span><span class="annot"><span class="annottext">(BuildT Identity () -> m ()) -> BuildT Identity () -> m () forall a b. (a -> b) -> a -> b </span><span class="hs-operator hs-var">$</span></span><span> </span><span class="annot"><span class="annottext">Lens GraphState GraphState [NodeDef] [NodeDef] forall (f :: * -> *). Identical f => LensLike' f GraphState [NodeDef] </span><a href="TensorFlow.Build.html#nodeBuffer"><span class="hs-identifier hs-var">nodeBuffer</span></a></span><span> </span><span class="annot"><span class="annottext">(forall (f :: * -> *). Identical f => LensLike' f GraphState [NodeDef]) -> [NodeDef] -> BuildT Identity () forall s (m :: * -> *) a. (MonadState s m, Monoid a) => Setter' s a -> a -> m () </span><span class="hs-operator hs-var"><>=</span></span><span> </span><span class="annot"><span class="annottext">GraphDef </span><a href="#local-6989586621679165361"><span class="hs-identifier hs-var">g</span></a></span><span> </span><span class="annot"><span class="annottext">GraphDef -> FoldLike [NodeDef] GraphDef GraphDef [NodeDef] [NodeDef] -> [NodeDef] forall s a t b. s -> FoldLike a s t a b -> a </span><span class="hs-operator hs-var">^.</span></span><span> </span><span class="annot"><span class="annottext">FoldLike [NodeDef] GraphDef GraphDef [NodeDef] [NodeDef] forall (f :: * -> *) s a. (Functor f, HasField s "node" a) => LensLike' f s a </span><span class="hs-identifier hs-var">node</span></span><span> </span><span id="line-245"></span><span> </span><span id="line-246"></span><span class="hs-comment">-- | Render the given op if it hasn't been rendered already, and return its</span><span> </span><span id="line-247"></span><span class="hs-comment">-- name.</span><span> </span><span id="line-248"></span><span class="annot"><a href="TensorFlow.Build.html#getOrAddOp"><span class="hs-identifier hs-type">getOrAddOp</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="TensorFlow.Output.html#OpDef"><span class="hs-identifier hs-type">OpDef</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="TensorFlow.Build.html#Build"><span class="hs-identifier hs-type">Build</span></a></span><span> </span><span class="annot"><a href="TensorFlow.Output.html#NodeName"><span class="hs-identifier hs-type">NodeName</span></a></span><span> </span><span id="line-249"></span><span id="getOrAddOp"><span class="annot"><span class="annottext">getOrAddOp :: OpDef -> Build NodeName </span><a href="TensorFlow.Build.html#getOrAddOp"><span class="hs-identifier hs-var hs-var">getOrAddOp</span></a></span></span><span> </span><span id="local-6989586621679165360"><span class="annot"><span class="annottext">o :: OpDef </span><a href="#local-6989586621679165360"><span class="hs-identifier hs-var">o</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span> </span><span id="line-250"></span><span> </span><span id="local-6989586621679165359"><span class="annot"><span class="annottext">PendingNode </span><a href="#local-6989586621679165359"><span class="hs-identifier hs-var">pending</span></a></span></span><span> </span><span class="hs-glyph"><-</span><span> </span><span class="annot"><span class="annottext">OpDef -> Build PendingNode </span><a href="TensorFlow.Build.html#getPendingNode"><span class="hs-identifier hs-var">getPendingNode</span></a></span><span> </span><span class="annot"><span class="annottext">OpDef </span><a href="#local-6989586621679165360"><span class="hs-identifier hs-var">o</span></a></span><span> </span><span id="line-251"></span><span> </span><span class="annot"><span class="annottext">FoldLike (Maybe NodeDef) GraphState GraphState (Map PendingNode NodeDef) (Map PendingNode NodeDef) -> (Map PendingNode NodeDef -> Maybe NodeDef) -> BuildT Identity (Maybe NodeDef) forall s (m :: * -> *) r t a b. MonadState s m => FoldLike r s t a b -> (a -> r) -> m r </span><span class="hs-identifier hs-var">uses</span></span><span> </span><span class="annot"><span class="annottext">FoldLike (Maybe NodeDef) GraphState GraphState (Map PendingNode NodeDef) (Map PendingNode NodeDef) Lens GraphState GraphState (Map PendingNode NodeDef) (Map PendingNode NodeDef) </span><a href="TensorFlow.Build.html#renderedNodes"><span class="hs-identifier hs-var">renderedNodes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">PendingNode -> Map PendingNode NodeDef -> Maybe NodeDef forall k a. Ord k => k -> Map k a -> Maybe a </span><span class="hs-identifier hs-var">Map.lookup</span></span><span> </span><span class="annot"><span class="annottext">PendingNode </span><a href="#local-6989586621679165359"><span class="hs-identifier hs-var">pending</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">BuildT Identity (Maybe NodeDef) -> (Maybe NodeDef -> Build NodeName) -> Build NodeName forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b </span><span class="hs-operator hs-var">>>=</span></span><span> </span><span class="hs-glyph">\</span><span class="hs-glyph">case</span><span> </span><span id="line-252"></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Just</span></span><span> </span><span id="local-6989586621679165356"><span class="annot"><span class="annottext">n :: NodeDef </span><a href="#local-6989586621679165356"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><span class="annottext">NodeName -> Build NodeName forall (m :: * -> *) a. Monad m => a -> m a </span><span class="hs-identifier hs-var">return</span></span><span> </span><span class="annot"><span class="annottext">(NodeName -> Build NodeName) -> NodeName -> Build NodeName forall a b. (a -> b) -> a -> b </span><span class="hs-operator hs-var">$</span></span><span> </span><span class="annot"><span class="annottext">Text -> NodeName </span><a href="TensorFlow.Output.html#NodeName"><span class="hs-identifier hs-var">NodeName</span></a></span><span> </span><span class="annot"><span class="annottext">(Text -> NodeName) -> Text -> NodeName forall a b. (a -> b) -> a -> b </span><span class="hs-operator hs-var">$</span></span><span> </span><span class="annot"><span class="annottext">NodeDef </span><a href="#local-6989586621679165356"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">NodeDef -> FoldLike Text NodeDef NodeDef Text Text -> Text forall s a t b. s -> FoldLike a s t a b -> a </span><span class="hs-operator hs-var">^.</span></span><span> </span><span class="annot"><span class="annottext">FoldLike Text NodeDef NodeDef Text Text forall (f :: * -> *) s a. (Functor f, HasField s "name" a) => LensLike' f s a </span><span class="hs-identifier hs-var">name</span></span><span> </span><span id="line-253"></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Nothing</span></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><span class="annottext">PendingNode -> Build NodeName </span><a href="TensorFlow.Build.html#addNewOpFromPending"><span class="hs-identifier hs-var">addNewOpFromPending</span></a></span><span> </span><span class="annot"><span class="annottext">PendingNode </span><a href="#local-6989586621679165359"><span class="hs-identifier hs-var">pending</span></a></span><span> </span><span id="line-254"></span><span> </span><span id="line-255"></span><span class="annot"><a href="TensorFlow.Build.html#lookupNode"><span class="hs-identifier hs-type">lookupNode</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="TensorFlow.Output.html#NodeName"><span class="hs-identifier hs-type">NodeName</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="TensorFlow.Build.html#Build"><span class="hs-identifier hs-type">Build</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">NodeDef</span></span><span> </span><span id="line-256"></span><span id="lookupNode"><span class="annot"><span class="annottext">lookupNode :: NodeName -> Build NodeDef </span><a href="TensorFlow.Build.html#lookupNode"><span class="hs-identifier hs-var hs-var">lookupNode</span></a></span></span><span> </span><span id="local-6989586621679165353"><span class="annot"><span class="annottext">n :: NodeName </span><a href="#local-6989586621679165353"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FoldLike (Maybe NodeDef) GraphState GraphState (Map NodeName NodeDef) (Map NodeName NodeDef) -> (Map NodeName NodeDef -> Maybe NodeDef) -> BuildT Identity (Maybe NodeDef) forall s (m :: * -> *) r t a b. MonadState s m => FoldLike r s t a b -> (a -> r) -> m r </span><span class="hs-identifier hs-var">uses</span></span><span> </span><span class="annot"><span class="annottext">FoldLike (Maybe NodeDef) GraphState GraphState (Map NodeName NodeDef) (Map NodeName NodeDef) Lens GraphState GraphState (Map NodeName NodeDef) (Map NodeName NodeDef) </span><a href="TensorFlow.Build.html#renderedNodeDefs"><span class="hs-identifier hs-var">renderedNodeDefs</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">NodeName -> Map NodeName NodeDef -> Maybe NodeDef forall k a. Ord k => k -> Map k a -> Maybe a </span><span class="hs-identifier hs-var">Map.lookup</span></span><span> </span><span class="annot"><span class="annottext">NodeName </span><a href="#local-6989586621679165353"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">BuildT Identity (Maybe NodeDef) -> (Maybe NodeDef -> Build NodeDef) -> Build NodeDef forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b </span><span class="hs-operator hs-var">>>=</span></span><span> </span><span class="hs-glyph">\</span><span class="hs-glyph">case</span><span> </span><span id="line-257"></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Just</span></span><span> </span><span id="local-6989586621679165352"><span class="annot"><span class="annottext">n' :: NodeDef </span><a href="#local-6989586621679165352"><span class="hs-identifier hs-var">n'</span></a></span></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><span class="annottext">NodeDef -> Build NodeDef forall (m :: * -> *) a. Monad m => a -> m a </span><span class="hs-identifier hs-var">return</span></span><span> </span><span class="annot"><span class="annottext">NodeDef </span><a href="#local-6989586621679165352"><span class="hs-identifier hs-var">n'</span></a></span><span> </span><span id="line-258"></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Nothing</span></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><span class="annottext">String -> Build NodeDef forall a. HasCallStack => String -> a </span><span class="hs-identifier hs-var">error</span></span><span> </span><span class="annot"><span class="annottext">(String -> Build NodeDef) -> String -> Build NodeDef forall a b. (a -> b) -> a -> b </span><span class="hs-operator hs-var">$</span></span><span> </span><span class="annot"><span class="hs-string">"lookupNode: unknown node name "</span></span><span> </span><span class="annot"><span class="annottext">String -> ShowS forall a. [a] -> [a] -> [a] </span><span class="hs-operator hs-var">++</span></span><span> </span><span class="annot"><span class="annottext">NodeName -> String forall a. Show a => a -> String </span><span class="hs-identifier hs-var">show</span></span><span> </span><span class="annot"><span class="annottext">NodeName </span><a href="#local-6989586621679165353"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span id="line-259"></span><span> </span><span id="line-260"></span><span class="hs-comment">-- | Add a new node for a given 'OpDef'. This is used for making "stateful" ops</span><span> </span><span id="line-261"></span><span class="hs-comment">-- which are not safe to dedup (e.g, "variable" and "assign").</span><span> </span><span id="line-262"></span><span class="annot"><a href="TensorFlow.Build.html#addNewOp"><span class="hs-identifier hs-type">addNewOp</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="TensorFlow.Output.html#OpDef"><span class="hs-identifier hs-type">OpDef</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="TensorFlow.Build.html#Build"><span class="hs-identifier hs-type">Build</span></a></span><span> </span><span class="annot"><a href="TensorFlow.Output.html#NodeName"><span class="hs-identifier hs-type">NodeName</span></a></span><span> </span><span id="line-263"></span><span id="addNewOp"><span class="annot"><span class="annottext">addNewOp :: OpDef -> Build NodeName </span><a href="TensorFlow.Build.html#addNewOp"><span class="hs-identifier hs-var hs-var">addNewOp</span></a></span></span><span> </span><span id="local-6989586621679165350"><span class="annot"><span class="annottext">o :: OpDef </span><a href="#local-6989586621679165350"><span class="hs-identifier hs-var">o</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">OpDef -> Build PendingNode </span><a href="TensorFlow.Build.html#getPendingNode"><span class="hs-identifier hs-var">getPendingNode</span></a></span><span> </span><span class="annot"><span class="annottext">OpDef </span><a href="#local-6989586621679165350"><span class="hs-identifier hs-var">o</span></a></span><span> </span><span class="annot"><span class="annottext">Build PendingNode -> (PendingNode -> Build NodeName) -> Build NodeName forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b </span><span class="hs-operator hs-var">>>=</span></span><span> </span><span class="annot"><span class="annottext">PendingNode -> Build NodeName </span><a href="TensorFlow.Build.html#addNewOpFromPending"><span class="hs-identifier hs-var">addNewOpFromPending</span></a></span><span> </span><span id="line-264"></span><span> </span><span id="line-265"></span><span class="annot"><a href="TensorFlow.Build.html#addNewOpFromPending"><span class="hs-identifier hs-type">addNewOpFromPending</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#PendingNode"><span class="hs-identifier hs-type">PendingNode</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="TensorFlow.Build.html#Build"><span class="hs-identifier hs-type">Build</span></a></span><span> </span><span class="annot"><a href="TensorFlow.Output.html#NodeName"><span class="hs-identifier hs-type">NodeName</span></a></span><span> </span><span id="line-266"></span><span id="addNewOpFromPending"><span class="annot"><span class="annottext">addNewOpFromPending :: PendingNode -> Build NodeName </span><a href="TensorFlow.Build.html#addNewOpFromPending"><span class="hs-identifier hs-var hs-var">addNewOpFromPending</span></a></span></span><span> </span><span id="local-6989586621679165349"><span class="annot"><span class="annottext">pending :: PendingNode </span><a href="#local-6989586621679165349"><span class="hs-identifier hs-var">pending</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span> </span><span id="line-267"></span><span> </span><span id="local-6989586621679165348"><span class="annot"><span class="annottext">NodeName </span><a href="#local-6989586621679165348"><span class="hs-identifier hs-var">nodeName</span></a></span></span><span> </span><span class="hs-glyph"><-</span><span> </span><span class="annot"><span class="annottext">PendingNode -> Build NodeName </span><a href="TensorFlow.Build.html#renderPendingNode"><span class="hs-identifier hs-var">renderPendingNode</span></a></span><span> </span><span class="annot"><span class="annottext">PendingNode </span><a href="#local-6989586621679165349"><span class="hs-identifier hs-var">pending</span></a></span><span> </span><span id="line-268"></span><span> </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621679165346"><span class="annot"><span class="annottext">nodeDef :: NodeDef </span><a href="#local-6989586621679165346"><span class="hs-identifier hs-var hs-var">nodeDef</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PendingNode -> NodeDef </span><a href="TensorFlow.Build.html#pendingNodeDef"><span class="hs-identifier hs-var">pendingNodeDef</span></a></span><span> </span><span class="annot"><span class="annottext">PendingNode </span><a href="#local-6989586621679165349"><span class="hs-identifier hs-var">pending</span></a></span><span> </span><span class="annot"><span class="annottext">NodeDef -> (NodeDef -> NodeDef) -> NodeDef forall s t. s -> (s -> t) -> t </span><span class="hs-operator hs-var">&</span></span><span> </span><span class="annot"><span class="annottext">forall (f :: * -> *). Identical f => LensLike' f NodeDef Text forall (f :: * -> *) s a. (Functor f, HasField s "name" a) => LensLike' f s a </span><span class="hs-identifier hs-var">name</span></span><span> </span><span class="annot"><span class="annottext">(forall (f :: * -> *). Identical f => LensLike' f NodeDef Text) -> Text -> NodeDef -> NodeDef forall s t a b. Setter s t a b -> b -> s -> t </span><span class="hs-operator hs-var">.~</span></span><span> </span><span class="annot"><span class="annottext">NodeName -> Text </span><a href="TensorFlow.Output.html#unNodeName"><span class="hs-identifier hs-var hs-var">unNodeName</span></a></span><span> </span><span class="annot"><span class="annottext">NodeName </span><a href="#local-6989586621679165348"><span class="hs-identifier hs-var">nodeName</span></a></span><span> </span><span id="line-269"></span><span> </span><span class="annot"><span class="annottext">Lens GraphState GraphState [NodeDef] [NodeDef] forall (f :: * -> *). Identical f => LensLike' f GraphState [NodeDef] </span><a href="TensorFlow.Build.html#nodeBuffer"><span class="hs-identifier hs-var">nodeBuffer</span></a></span><span> </span><span class="annot"><span class="annottext">(forall (f :: * -> *). Identical f => LensLike' f GraphState [NodeDef]) -> ([NodeDef] -> [NodeDef]) -> BuildT Identity () forall s (m :: * -> *) a b. MonadState s m => Setter s s a b -> (a -> b) -> m () </span><span class="hs-operator hs-var">%=</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">NodeDef </span><a href="#local-6989586621679165346"><span class="hs-identifier hs-var">nodeDef</span></a></span><span> </span><span class="annot"><span class="annottext">NodeDef -> [NodeDef] -> [NodeDef] forall a. a -> [a] -> [a] </span><span class="hs-glyph hs-var">:</span></span><span class="hs-special">)</span><span> </span><span id="line-270"></span><span> </span><span class="annot"><span class="annottext">Lens GraphState GraphState (Map PendingNode NodeDef) (Map PendingNode NodeDef) forall (f :: * -> *). Identical f => LensLike' f GraphState (Map PendingNode NodeDef) </span><a href="TensorFlow.Build.html#renderedNodes"><span class="hs-identifier hs-var">renderedNodes</span></a></span><span> </span><span class="annot"><span class="annottext">(forall (f :: * -> *). Identical f => LensLike' f GraphState (Map PendingNode NodeDef)) -> (Map PendingNode NodeDef -> Map PendingNode NodeDef) -> BuildT Identity () forall s (m :: * -> *) a b. MonadState s m => Setter s s a b -> (a -> b) -> m () </span><span class="hs-operator hs-var">%=</span></span><span> </span><span class="annot"><span class="annottext">PendingNode -> NodeDef -> Map PendingNode NodeDef -> Map PendingNode NodeDef forall k a. Ord k => k -> a -> Map k a -> Map k a </span><span class="hs-identifier hs-var">Map.insert</span></span><span> </span><span class="annot"><span class="annottext">PendingNode </span><a href="#local-6989586621679165349"><span class="hs-identifier hs-var">pending</span></a></span><span> </span><span class="annot"><span class="annottext">NodeDef </span><a href="#local-6989586621679165346"><span class="hs-identifier hs-var">nodeDef</span></a></span><span> </span><span id="line-271"></span><span> </span><span class="annot"><span class="annottext">Lens GraphState GraphState (Map NodeName NodeDef) (Map NodeName NodeDef) forall (f :: * -> *). Identical f => LensLike' f GraphState (Map NodeName NodeDef) </span><a href="TensorFlow.Build.html#renderedNodeDefs"><span class="hs-identifier hs-var">renderedNodeDefs</span></a></span><span> </span><span class="annot"><span class="annottext">(forall (f :: * -> *). Identical f => LensLike' f GraphState (Map NodeName NodeDef)) -> (Map NodeName NodeDef -> Map NodeName NodeDef) -> BuildT Identity () forall s (m :: * -> *) a b. MonadState s m => Setter s s a b -> (a -> b) -> m () </span><span class="hs-operator hs-var">%=</span></span><span> </span><span class="annot"><span class="annottext">NodeName -> NodeDef -> Map NodeName NodeDef -> Map NodeName NodeDef forall k a. Ord k => k -> a -> Map k a -> Map k a </span><span class="hs-identifier hs-var">Map.insert</span></span><span> </span><span class="annot"><span class="annottext">NodeName </span><a href="#local-6989586621679165348"><span class="hs-identifier hs-var">nodeName</span></a></span><span> </span><span class="annot"><span class="annottext">NodeDef </span><a href="#local-6989586621679165346"><span class="hs-identifier hs-var">nodeDef</span></a></span><span> </span><span id="line-272"></span><span> </span><span class="annot"><span class="annottext">NodeName -> Build NodeName forall (m :: * -> *) a. Monad m => a -> m a </span><span class="hs-identifier hs-var">return</span></span><span> </span><span class="annot"><span class="annottext">NodeName </span><a href="#local-6989586621679165348"><span class="hs-identifier hs-var">nodeName</span></a></span><span> </span><span id="line-273"></span><span> </span><span id="line-274"></span><span class="hs-comment">-- | Get the pending node corresponding to an OpDef, which may or may not have</span><span> </span><span id="line-275"></span><span class="hs-comment">-- been rendered before. Implicitly renders all of this node's inputs.</span><span> </span><span id="line-276"></span><span class="annot"><a href="TensorFlow.Build.html#getPendingNode"><span class="hs-identifier hs-type">getPendingNode</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="TensorFlow.Output.html#OpDef"><span class="hs-identifier hs-type">OpDef</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="TensorFlow.Build.html#Build"><span class="hs-identifier hs-type">Build</span></a></span><span> </span><span class="annot"><a href="TensorFlow.Build.html#PendingNode"><span class="hs-identifier hs-type">PendingNode</span></a></span><span> </span><span id="line-277"></span><span id="getPendingNode"><span class="annot"><span class="annottext">getPendingNode :: OpDef -> Build PendingNode </span><a href="TensorFlow.Build.html#getPendingNode"><span class="hs-identifier hs-var hs-var">getPendingNode</span></a></span></span><span> </span><span id="local-6989586621679165343"><span class="annot"><span class="annottext">o :: OpDef </span><a href="#local-6989586621679165343"><span class="hs-identifier hs-var">o</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span> </span><span id="line-278"></span><span> </span><span class="hs-comment">-- An empty string in the proto field means that no specific</span><span> </span><span id="line-279"></span><span> </span><span class="hs-comment">-- device is specified.</span><span> </span><span id="line-280"></span><span> </span><span id="local-6989586621679165342"><span class="annot"><span class="annottext">Text </span><a href="#local-6989586621679165342"><span class="hs-identifier hs-var">dev</span></a></span></span><span> </span><span class="hs-glyph"><-</span><span> </span><span class="annot"><span class="annottext">Text -> (Device -> Text) -> Maybe Device -> Text forall b a. b -> (a -> b) -> Maybe a -> b </span><span class="hs-identifier hs-var">maybe</span></span><span> </span><span class="annot"><span class="hs-string">""</span></span><span> </span><span class="annot"><span class="annottext">Device -> Text </span><a href="TensorFlow.Output.html#deviceName"><span class="hs-identifier hs-var hs-var">deviceName</span></a></span><span> </span><span class="annot"><span class="annottext">(Maybe Device -> Text) -> BuildT Identity (Maybe Device) -> BuildT Identity Text forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b </span><span class="hs-operator hs-var"><$></span></span><span> </span><span class="annot"><span class="annottext">FoldLike (Maybe Device) GraphState GraphState (Maybe Device) (Maybe Device) -> BuildT Identity (Maybe Device) forall s (m :: * -> *) a t b. MonadState s m => FoldLike a s t a b -> m a </span><span class="hs-identifier hs-var">use</span></span><span> </span><span class="annot"><span class="annottext">FoldLike (Maybe Device) GraphState GraphState (Maybe Device) (Maybe Device) Lens GraphState GraphState (Maybe Device) (Maybe Device) </span><a href="TensorFlow.Build.html#defaultDevice"><span class="hs-identifier hs-var">defaultDevice</span></a></span><span> </span><span id="line-281"></span><span> </span><span id="local-6989586621679165338"><span class="annot"><span class="annottext">[Scope] </span><a href="#local-6989586621679165338"><span class="hs-identifier hs-var">scope</span></a></span></span><span> </span><span class="hs-glyph"><-</span><span> </span><span class="annot"><span class="annottext">FoldLike [Scope] GraphState GraphState [Scope] [Scope] -> BuildT Identity [Scope] forall s (m :: * -> *) a t b. MonadState s m => FoldLike a s t a b -> m a </span><span class="hs-identifier hs-var">use</span></span><span> </span><span class="annot"><span class="annottext">FoldLike [Scope] GraphState GraphState [Scope] [Scope] Lens GraphState GraphState [Scope] [Scope] </span><a href="TensorFlow.Build.html#currentScope"><span class="hs-identifier hs-var">currentScope</span></a></span><span> </span><span id="line-282"></span><span> </span><span id="local-6989586621679165337"><span class="annot"><span class="annottext">Set NodeName </span><a href="#local-6989586621679165337"><span class="hs-identifier hs-var">controls</span></a></span></span><span> </span><span class="hs-glyph"><-</span><span> </span><span class="annot"><span class="annottext">FoldLike (Set NodeName) GraphState GraphState (Set NodeName) (Set NodeName) -> BuildT Identity (Set NodeName) forall s (m :: * -> *) a t b. MonadState s m => FoldLike a s t a b -> m a </span><span class="hs-identifier hs-var">use</span></span><span> </span><span class="annot"><span class="annottext">FoldLike (Set NodeName) GraphState GraphState (Set NodeName) (Set NodeName) Lens GraphState GraphState (Set NodeName) (Set NodeName) </span><a href="TensorFlow.Build.html#defaultControlInputs"><span class="hs-identifier hs-var">defaultControlInputs</span></a></span><span> </span><span id="line-283"></span><span> </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621679165336"><span class="annot"><span class="annottext">inputs :: [Text] </span><a href="#local-6989586621679165336"><span class="hs-identifier hs-var hs-var">inputs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Output -> Text) -> [Output] -> [Text] forall a b. (a -> b) -> [a] -> [b] </span><span class="hs-identifier hs-var">map</span></span><span> </span><span class="annot"><span class="annottext">Output -> Text </span><a href="TensorFlow.Build.html#encodeOutput"><span class="hs-identifier hs-var">encodeOutput</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">OpDef </span><a href="#local-6989586621679165343"><span class="hs-identifier hs-var">o</span></a></span><span> </span><span class="annot"><span class="annottext">OpDef -> FoldLike [Output] OpDef OpDef [Output] [Output] -> [Output] forall s a t b. s -> FoldLike a s t a b -> a </span><span class="hs-operator hs-var">^.</span></span><span> </span><span class="annot"><span class="annottext">FoldLike [Output] OpDef OpDef [Output] [Output] Lens' OpDef [Output] </span><a href="TensorFlow.Output.html#opInputs"><span class="hs-identifier hs-var">opInputs</span></a></span><span class="hs-special">)</span><span> </span><span id="line-284"></span><span> </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621679165335"><span class="annot"><span class="annottext">controlInputs :: [Text] </span><a href="#local-6989586621679165335"><span class="hs-identifier hs-var hs-var">controlInputs</span></a></span></span><span> </span><span id="line-285"></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(NodeName -> Text) -> [NodeName] -> [Text] forall a b. (a -> b) -> [a] -> [b] </span><span class="hs-identifier hs-var">map</span></span><span> </span><span class="annot"><span class="annottext">NodeName -> Text </span><a href="#local-6989586621679165334"><span class="hs-identifier hs-var">makeDep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">OpDef </span><a href="#local-6989586621679165343"><span class="hs-identifier hs-var">o</span></a></span><span> </span><span class="annot"><span class="annottext">OpDef -> FoldLike [NodeName] OpDef OpDef [NodeName] [NodeName] -> [NodeName] forall s a t b. s -> FoldLike a s t a b -> a </span><span class="hs-operator hs-var">^.</span></span><span> </span><span class="annot"><span class="annottext">FoldLike [NodeName] OpDef OpDef [NodeName] [NodeName] Lens' OpDef [NodeName] </span><a href="TensorFlow.Output.html#opControlInputs"><span class="hs-identifier hs-var">opControlInputs</span></a></span><span> </span><span class="annot"><span class="annottext">[NodeName] -> [NodeName] -> [NodeName] forall a. [a] -> [a] -> [a] </span><span class="hs-operator hs-var">++</span></span><span> </span><span class="annot"><span class="annottext">Set NodeName -> [NodeName] forall a. Set a -> [a] </span><span class="hs-identifier hs-var">Set.toList</span></span><span> </span><span class="annot"><span class="annottext">Set NodeName </span><a href="#local-6989586621679165337"><span class="hs-identifier hs-var">controls</span></a></span><span class="hs-special">)</span><span> </span><span id="line-286"></span><span> </span><span class="annot"><span class="annottext">PendingNode -> Build PendingNode forall (m :: * -> *) a. Monad m => a -> m a </span><span class="hs-identifier hs-var">return</span></span><span> </span><span class="annot"><span class="annottext">(PendingNode -> Build PendingNode) -> PendingNode -> Build PendingNode forall a b. (a -> b) -> a -> b </span><span class="hs-operator hs-var">$</span></span><span> </span><span class="annot"><span class="annottext">[Scope] -> PendingNodeName -> NodeDef -> PendingNode </span><a href="TensorFlow.Build.html#PendingNode"><span class="hs-identifier hs-var">PendingNode</span></a></span><span> </span><span class="annot"><span class="annottext">[Scope] </span><a href="#local-6989586621679165338"><span class="hs-identifier hs-var">scope</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">OpDef </span><a href="#local-6989586621679165343"><span class="hs-identifier hs-var">o</span></a></span><span> </span><span class="annot"><span class="annottext">OpDef -> FoldLike PendingNodeName OpDef OpDef PendingNodeName PendingNodeName -> PendingNodeName forall s a t b. s -> FoldLike a s t a b -> a </span><span class="hs-operator hs-var">^.</span></span><span> </span><span class="annot"><span class="annottext">FoldLike PendingNodeName OpDef OpDef PendingNodeName PendingNodeName Lens' OpDef PendingNodeName </span><a href="TensorFlow.Output.html#opName"><span class="hs-identifier hs-var">opName</span></a></span><span class="hs-special">)</span><span> </span><span id="line-287"></span><span> </span><span class="annot"><span class="annottext">(NodeDef -> PendingNode) -> NodeDef -> PendingNode forall a b. (a -> b) -> a -> b </span><span class="hs-operator hs-var">$</span></span><span> </span><span class="annot"><span class="annottext">NodeDef forall msg. Message msg => msg </span><span class="hs-identifier hs-var">defMessage</span></span><span> </span><span class="annot"><span class="annottext">NodeDef -> (NodeDef -> NodeDef) -> NodeDef forall s t. s -> (s -> t) -> t </span><span class="hs-operator hs-var">&</span></span><span> </span><span class="annot"><span class="annottext">forall (f :: * -> *). Identical f => LensLike' f NodeDef Text forall (f :: * -> *) s a. (Functor f, HasField s "op" a) => LensLike' f s a </span><span class="hs-identifier hs-var">op</span></span><span> </span><span class="annot"><span class="annottext">(forall (f :: * -> *). Identical f => LensLike' f NodeDef Text) -> Text -> NodeDef -> NodeDef forall s t a b. Setter s t a b -> b -> s -> t </span><span class="hs-operator hs-var">.~</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">OpType -> Text </span><a href="TensorFlow.Output.html#unOpType"><span class="hs-identifier hs-var hs-var">unOpType</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">OpDef </span><a href="#local-6989586621679165343"><span class="hs-identifier hs-var">o</span></a></span><span> </span><span class="annot"><span class="annottext">OpDef -> FoldLike OpType OpDef OpDef OpType OpType -> OpType forall s a t b. s -> FoldLike a s t a b -> a </span><span class="hs-operator hs-var">^.</span></span><span> </span><span class="annot"><span class="annottext">FoldLike OpType OpDef OpDef OpType OpType Lens' OpDef OpType </span><a href="TensorFlow.Output.html#opType"><span class="hs-identifier hs-var">opType</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Text</span></span><span class="hs-special">)</span><span> </span><span id="line-288"></span><span> </span><span class="annot"><span class="annottext">NodeDef -> (NodeDef -> NodeDef) -> NodeDef forall s t. s -> (s -> t) -> t </span><span class="hs-operator hs-var">&</span></span><span> </span><span class="annot"><span class="annottext">forall (f :: * -> *). Identical f => LensLike' f NodeDef (Map Text AttrValue) forall (f :: * -> *) s a. (Functor f, HasField s "attr" a) => LensLike' f s a </span><span class="hs-identifier hs-var">attr</span></span><span> </span><span class="annot"><span class="annottext">(forall (f :: * -> *). Identical f => LensLike' f NodeDef (Map Text AttrValue)) -> Map Text AttrValue -> NodeDef -> NodeDef forall s t a b. Setter s t a b -> b -> s -> t </span><span class="hs-operator hs-var">.~</span></span><span> </span><span class="annot"><span class="annottext">OpDef -> Map Text AttrValue </span><a href="TensorFlow.Output.html#_opAttrs"><span class="hs-identifier hs-var hs-var">_opAttrs</span></a></span><span> </span><span class="annot"><span class="annottext">OpDef </span><a href="#local-6989586621679165343"><span class="hs-identifier hs-var">o</span></a></span><span> </span><span id="line-289"></span><span> </span><span class="annot"><span class="annottext">NodeDef -> (NodeDef -> NodeDef) -> NodeDef forall s t. s -> (s -> t) -> t </span><span class="hs-operator hs-var">&</span></span><span> </span><span class="annot"><span class="annottext">forall (f :: * -> *). Identical f => LensLike' f NodeDef [Text] forall (f :: * -> *) s a. (Functor f, HasField s "input" a) => LensLike' f s a </span><span class="hs-identifier hs-var">input</span></span><span> </span><span class="annot"><span class="annottext">(forall (f :: * -> *). Identical f => LensLike' f NodeDef [Text]) -> [Text] -> NodeDef -> NodeDef forall s t a b. Setter s t a b -> b -> s -> t </span><span class="hs-operator hs-var">.~</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Text] </span><a href="#local-6989586621679165336"><span class="hs-identifier hs-var">inputs</span></a></span><span> </span><span class="annot"><span class="annottext">[Text] -> [Text] -> [Text] forall a. [a] -> [a] -> [a] </span><span class="hs-operator hs-var">++</span></span><span> </span><span class="annot"><span class="annottext">[Text] </span><a href="#local-6989586621679165335"><span class="hs-identifier hs-var">controlInputs</span></a></span><span class="hs-special">)</span><span> </span><span id="line-290"></span><span> </span><span class="annot"><span class="annottext">NodeDef -> (NodeDef -> NodeDef) -> NodeDef forall s t. s -> (s -> t) -> t </span><span class="hs-operator hs-var">&</span></span><span> </span><span class="annot"><span class="annottext">forall (f :: * -> *). Identical f => LensLike' f NodeDef Text forall (f :: * -> *) s a. (Functor f, HasField s "device" a) => LensLike' f s a </span><span class="hs-identifier hs-var">device</span></span><span> </span><span class="annot"><span class="annottext">(forall (f :: * -> *). Identical f => LensLike' f NodeDef Text) -> Text -> NodeDef -> NodeDef forall s t a b. Setter s t a b -> b -> s -> t </span><span class="hs-operator hs-var">.~</span></span><span> </span><span class="annot"><span class="annottext">Text </span><a href="#local-6989586621679165342"><span class="hs-identifier hs-var">dev</span></a></span><span> </span><span id="line-291"></span><span> </span><span class="hs-keyword">where</span><span> </span><span id="line-292"></span><span> </span><span id="local-6989586621679165334"><span class="annot"><span class="annottext">makeDep :: NodeName -> Text </span><a href="#local-6989586621679165334"><span class="hs-identifier hs-var hs-var">makeDep</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-string">"^"</span></span><span> </span><span class="annot"><span class="annottext">Text -> Text -> Text forall a. Semigroup a => a -> a -> a </span><span class="hs-operator hs-var"><></span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">(Text -> Text) -> (NodeName -> Text) -> NodeName -> Text forall b c a. (b -> c) -> (a -> b) -> a -> c </span><span class="hs-operator hs-var">.</span></span><span> </span><span class="annot"><span class="annottext">NodeName -> Text </span><a href="TensorFlow.Output.html#unNodeName"><span class="hs-identifier hs-var hs-var">unNodeName</span></a></span><span> </span><span id="line-293"></span><span> </span><span id="line-294"></span><span class="hs-comment">-- | Pick a name for a pending node. If it has an explicit name, just use that;</span><span> </span><span id="line-295"></span><span class="hs-comment">-- if the name is implicit, assign a new unique name based on the op type.</span><span> </span><span id="line-296"></span><span class="annot"><a href="TensorFlow.Build.html#renderPendingNode"><span class="hs-identifier hs-type">renderPendingNode</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#PendingNode"><span class="hs-identifier hs-type">PendingNode</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="TensorFlow.Build.html#Build"><span class="hs-identifier hs-type">Build</span></a></span><span> </span><span class="annot"><a href="TensorFlow.Output.html#NodeName"><span class="hs-identifier hs-type">NodeName</span></a></span><span> </span><span id="line-297"></span><span id="renderPendingNode"><span class="annot"><span class="annottext">renderPendingNode :: PendingNode -> Build NodeName </span><a href="TensorFlow.Build.html#renderPendingNode"><span class="hs-identifier hs-var hs-var">renderPendingNode</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="TensorFlow.Build.html#PendingNode"><span class="hs-identifier hs-type">PendingNode</span></a></span><span> </span><span id="local-6989586621679165331"><span class="annot"><span class="annottext">scope :: [Scope] </span><a href="#local-6989586621679165331"><span class="hs-identifier hs-var">scope</span></a></span></span><span> </span><span id="local-6989586621679165330"><span class="annot"><span class="annottext">pendingName :: PendingNodeName </span><a href="#local-6989586621679165330"><span class="hs-identifier hs-var">pendingName</span></a></span></span><span> </span><span id="local-6989586621679165329"><span class="annot"><span class="annottext">nodeDef :: NodeDef </span><a href="#local-6989586621679165329"><span class="hs-identifier hs-var">nodeDef</span></a></span></span><span class="hs-special">)</span><span> </span><span id="line-298"></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Text -> NodeName </span><a href="TensorFlow.Output.html#NodeName"><span class="hs-identifier hs-var">NodeName</span></a></span><span> </span><span class="annot"><span class="annottext">(Text -> NodeName) -> (Text -> Text) -> Text -> NodeName forall b c a. (b -> c) -> (a -> b) -> a -> c </span><span class="hs-operator hs-var">.</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Text </span><a href="#local-6989586621679165328"><span class="hs-identifier hs-var">scopePrefix</span></a></span><span> </span><span class="annot"><span class="annottext">Text -> Text -> Text forall a. Semigroup a => a -> a -> a </span><span class="hs-operator hs-var"><></span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">(Text -> NodeName) -> BuildT Identity Text -> Build NodeName forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b </span><span class="hs-operator hs-var"><$></span></span><span> </span><span class="annot"><span class="annottext">BuildT Identity Text </span><a href="#local-6989586621679165327"><span class="hs-identifier hs-var">getName</span></a></span><span> </span><span id="line-299"></span><span> </span><span class="hs-keyword">where</span><span> </span><span id="line-300"></span><span> </span><span id="local-6989586621679165328"><span class="annot"><span class="annottext">scopePrefix :: Text </span><a href="#local-6989586621679165328"><span class="hs-identifier hs-var hs-var">scopePrefix</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Text] -> Text </span><span class="hs-identifier hs-var">Text.concat</span></span><span> </span><span class="annot"><span class="annottext">([Text] -> Text) -> [Text] -> Text forall a b. (a -> b) -> a -> b </span><span class="hs-operator hs-var">$</span></span><span> </span><span class="annot"><span class="annottext">(Scope -> Text) -> [Scope] -> [Text] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b </span><span class="hs-identifier hs-var">fmap</span></span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="annot"><span class="annottext">Text -> Text -> Text forall a. Semigroup a => a -> a -> a </span><span class="hs-operator hs-var"><></span></span><span> </span><span class="annot"><span class="hs-string">"/"</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">(Text -> Text) -> (Scope -> Text) -> Scope -> Text forall b c a. (b -> c) -> (a -> b) -> a -> c </span><span class="hs-operator hs-var">.</span></span><span> </span><span class="annot"><span class="annottext">Scope -> Text </span><a href="TensorFlow.Build.html#unScope"><span class="hs-identifier hs-var hs-var">unScope</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Scope] </span><a href="#local-6989586621679165331"><span class="hs-identifier hs-var">scope</span></a></span><span> </span><span id="line-301"></span><span> </span><span id="local-6989586621679165327"><span class="annot"><span class="annottext">getName :: BuildT Identity Text </span><a href="#local-6989586621679165327"><span class="hs-identifier hs-var hs-var">getName</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">PendingNodeName </span><a href="#local-6989586621679165330"><span class="hs-identifier hs-var">pendingName</span></a></span><span> </span><span class="hs-keyword">of</span><span> </span><span id="line-302"></span><span> </span><span class="annot"><a href="TensorFlow.Output.html#ExplicitName"><span class="hs-identifier hs-type">ExplicitName</span></a></span><span> </span><span id="local-6989586621679165325"><span class="annot"><span class="annottext">n :: Text </span><a href="#local-6989586621679165325"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><span class="annottext">Text -> BuildT Identity Text forall (m :: * -> *) a. Monad m => a -> m a </span><span class="hs-identifier hs-var">return</span></span><span> </span><span class="annot"><span class="annottext">Text </span><a href="#local-6989586621679165325"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span id="line-303"></span><span> </span><span class="annot"><a href="TensorFlow.Output.html#ImplicitName"><span class="hs-identifier hs-type">ImplicitName</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="hs-keyword">do</span><span> </span><span id="line-304"></span><span> </span><span id="local-6989586621679165324"><span class="annot"><span class="annottext">u :: Unique </span><a href="#local-6989586621679165324"><span class="hs-identifier hs-var">u</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="annot"><a href="TensorFlow.Build.html#Unique"><span class="hs-identifier hs-type">Unique</span></a></span><span> </span><span id="local-6989586621679165323"><span class="annot"><span class="annottext">k :: Int </span><a href="#local-6989586621679165323"><span class="hs-identifier hs-var">k</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph"><-</span><span> </span><span class="annot"><span class="annottext">FoldLike Unique GraphState GraphState Unique Unique -> BuildT Identity Unique forall s (m :: * -> *) a t b. MonadState s m => FoldLike a s t a b -> m a </span><span class="hs-identifier hs-var">use</span></span><span> </span><span class="annot"><span class="annottext">FoldLike Unique GraphState GraphState Unique Unique Lens GraphState GraphState Unique Unique </span><a href="TensorFlow.Build.html#nextUnique"><span class="hs-identifier hs-var">nextUnique</span></a></span><span> </span><span id="line-305"></span><span> </span><span class="annot"><span class="annottext">Lens GraphState GraphState Unique Unique forall (f :: * -> *). Identical f => LensLike' f GraphState Unique </span><a href="TensorFlow.Build.html#nextUnique"><span class="hs-identifier hs-var">nextUnique</span></a></span><span> </span><span class="annot"><span class="annottext">(forall (f :: * -> *). Identical f => LensLike' f GraphState Unique) -> Unique -> BuildT Identity () forall s (m :: * -> *) a b. MonadState s m => Setter s s a b -> b -> m () </span><span class="hs-operator hs-var">.=</span></span><span> </span><span class="annot"><span class="annottext">Unique -> Unique forall a. Enum a => a -> a </span><span class="hs-identifier hs-var">succ</span></span><span> </span><span class="annot"><span class="annottext">Unique </span><a href="#local-6989586621679165324"><span class="hs-identifier hs-var">u</span></a></span><span> </span><span id="line-306"></span><span> </span><span class="annot"><span class="annottext">Text -> BuildT Identity Text forall (m :: * -> *) a. Monad m => a -> m a </span><span class="hs-identifier hs-var">return</span></span><span> </span><span class="annot"><span class="annottext">(Text -> BuildT Identity Text) -> Text -> BuildT Identity Text forall a b. (a -> b) -> a -> b </span><span class="hs-operator hs-var">$</span></span><span> </span><span class="annot"><span class="annottext">NodeDef </span><a href="#local-6989586621679165329"><span class="hs-identifier hs-var">nodeDef</span></a></span><span> </span><span class="annot"><span class="annottext">NodeDef -> FoldLike Text NodeDef NodeDef Text Text -> Text forall s a t b. s -> FoldLike a s t a b -> a </span><span class="hs-operator hs-var">^.</span></span><span> </span><span class="annot"><span class="annottext">FoldLike Text NodeDef NodeDef Text Text forall (f :: * -> *) s a. (Functor f, HasField s "op" a) => LensLike' f s a </span><span class="hs-identifier hs-var">op</span></span><span> </span><span class="annot"><span class="annottext">Text -> Text -> Text forall a. Semigroup a => a -> a -> a </span><span class="hs-operator hs-var"><></span></span><span> </span><span class="annot"><span class="hs-string">"_"</span></span><span> </span><span class="annot"><span class="annottext">Text -> Text -> Text forall a. Semigroup a => a -> a -> a </span><span class="hs-operator hs-var"><></span></span><span> </span><span class="annot"><span class="annottext">String -> Text </span><span class="hs-identifier hs-var">Text.pack</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -> String forall a. Show a => a -> String </span><span class="hs-identifier hs-var">show</span></span><span> </span><span class="annot"><span class="annottext">Int </span><a href="#local-6989586621679165323"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">)</span><span> </span><span id="line-307"></span><span> </span><span id="line-308"></span><span class="hs-comment">-- | Turn an 'Output' into a string representation for the TensorFlow</span><span> </span><span id="line-309"></span><span class="hs-comment">-- foreign APIs.</span><span> </span><span id="line-310"></span><span class="annot"><a href="TensorFlow.Build.html#encodeOutput"><span class="hs-identifier hs-type">encodeOutput</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="TensorFlow.Output.html#Output"><span class="hs-identifier hs-type">Output</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Text</span></span><span> </span><span id="line-311"></span><span id="encodeOutput"><span class="annot"><span class="annottext">encodeOutput :: Output -> Text </span><a href="TensorFlow.Build.html#encodeOutput"><span class="hs-identifier hs-var hs-var">encodeOutput</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="TensorFlow.Output.html#Output"><span class="hs-identifier hs-type">Output</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="TensorFlow.Output.html#OutputIx"><span class="hs-identifier hs-type">OutputIx</span></a></span><span> </span><span class="hs-number">0</span><span class="hs-special">)</span><span> </span><span id="local-6989586621679165318"><span class="annot"><span class="annottext">n :: NodeName </span><a href="#local-6989586621679165318"><span class="hs-identifier hs-var">n</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NodeName -> Text </span><a href="TensorFlow.Output.html#unNodeName"><span class="hs-identifier hs-var hs-var">unNodeName</span></a></span><span> </span><span class="annot"><span class="annottext">NodeName </span><a href="#local-6989586621679165318"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span id="line-312"></span><span class="annot"><a href="TensorFlow.Build.html#encodeOutput"><span class="hs-identifier hs-var">encodeOutput</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="TensorFlow.Output.html#Output"><span class="hs-identifier hs-type">Output</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="TensorFlow.Output.html#OutputIx"><span class="hs-identifier hs-type">OutputIx</span></a></span><span> </span><span id="local-6989586621679165317"><span class="annot"><span class="annottext">i :: Int </span><a href="#local-6989586621679165317"><span class="hs-identifier hs-var">i</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621679165316"><span class="annot"><span class="annottext">n :: NodeName </span><a href="#local-6989586621679165316"><span class="hs-identifier hs-var">n</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NodeName -> Text </span><a href="TensorFlow.Output.html#unNodeName"><span class="hs-identifier hs-var hs-var">unNodeName</span></a></span><span> </span><span class="annot"><span class="annottext">NodeName </span><a href="#local-6989586621679165316"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">Text -> Text -> Text forall a. Semigroup a => a -> a -> a </span><span class="hs-operator hs-var"><></span></span><span> </span><span class="annot"><span class="annottext">String -> Text </span><span class="hs-identifier hs-var">Text.pack</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-char">':'</span></span><span> </span><span class="annot"><span class="annottext">Char -> ShowS forall a. a -> [a] -> [a] </span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">Int -> String forall a. Show a => a -> String </span><span class="hs-identifier hs-var">show</span></span><span> </span><span class="annot"><span class="annottext">Int </span><a href="#local-6989586621679165317"><span class="hs-identifier hs-var">i</span></a></span><span class="hs-special">)</span><span> </span><span id="line-313"></span><span> </span><span id="line-314"></span><span class="hs-comment">-- | Modify some part of the state, run an action, and restore the state</span><span> </span><span id="line-315"></span><span class="hs-comment">-- after that action is done.</span><span> </span><span id="line-316"></span><span id="local-6989586621679165646"><span id="local-6989586621679165647"><span id="local-6989586621679165648"><span class="annot"><a href="TensorFlow.Build.html#withStateLens"><span class="hs-identifier hs-type">withStateLens</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#MonadBuild"><span class="hs-identifier hs-type">MonadBuild</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165648"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="hs-glyph">=></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Lens'</span></span><span> </span><span class="annot"><a href="TensorFlow.Build.html#GraphState"><span class="hs-identifier hs-type">GraphState</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165647"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679165647"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="#local-6989586621679165647"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="#local-6989586621679165648"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165646"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="#local-6989586621679165648"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165646"><span class="hs-identifier hs-type">b</span></a></span></span></span></span><span> </span><span id="line-317"></span><span id="withStateLens"><span class="annot"><span class="annottext">withStateLens :: Lens' GraphState a -> (a -> a) -> m b -> m b </span><a href="TensorFlow.Build.html#withStateLens"><span class="hs-identifier hs-var hs-var">withStateLens</span></a></span></span><span> </span><span id="local-6989586621679165315"><span class="annot"><span class="annottext">accessor :: Lens' GraphState a </span><a href="#local-6989586621679165315"><span class="hs-identifier hs-var">accessor</span></a></span></span><span> </span><span id="local-6989586621679165314"><span class="annot"><span class="annottext">f :: a -> a </span><a href="#local-6989586621679165314"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621679165313"><span class="annot"><span class="annottext">act :: m b </span><a href="#local-6989586621679165313"><span class="hs-identifier hs-var">act</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span> </span><span id="line-318"></span><span> </span><span id="local-6989586621679165312"><span class="annot"><span class="annottext">a </span><a href="#local-6989586621679165312"><span class="hs-identifier hs-var">old</span></a></span></span><span> </span><span class="hs-glyph"><-</span><span> </span><span class="annot"><span class="annottext">Build a -> m a forall (m :: * -> *) a. MonadBuild m => Build a -> m a </span><a href="TensorFlow.Build.html#build"><span class="hs-identifier hs-var">build</span></a></span><span> </span><span class="annot"><span class="annottext">(Build a -> m a) -> Build a -> m a forall a b. (a -> b) -> a -> b </span><span class="hs-operator hs-var">$</span></span><span> </span><span class="annot"><span class="annottext">FoldLike a GraphState GraphState a a -> Build a forall s (m :: * -> *) a t b. MonadState s m => FoldLike a s t a b -> m a </span><span class="hs-identifier hs-var">use</span></span><span> </span><span class="annot"><span class="annottext">FoldLike a GraphState GraphState a a Lens' GraphState a </span><a href="#local-6989586621679165315"><span class="hs-identifier hs-var">accessor</span></a></span><span> </span><span id="line-319"></span><span> </span><span class="annot"><span class="annottext">BuildT Identity () -> m () forall (m :: * -> *) a. MonadBuild m => Build a -> m a </span><a href="TensorFlow.Build.html#build"><span class="hs-identifier hs-var">build</span></a></span><span> </span><span class="annot"><span class="annottext">(BuildT Identity () -> m ()) -> BuildT Identity () -> m () forall a b. (a -> b) -> a -> b </span><span class="hs-operator hs-var">$</span></span><span> </span><span class="annot"><span class="annottext">Lens' GraphState a forall (f :: * -> *). Identical f => LensLike' f GraphState a </span><a href="#local-6989586621679165315"><span class="hs-identifier hs-var">accessor</span></a></span><span> </span><span class="annot"><span class="annottext">(forall (f :: * -> *). Identical f => LensLike' f GraphState a) -> (a -> a) -> BuildT Identity () forall s (m :: * -> *) a b. MonadState s m => Setter s s a b -> (a -> b) -> m () </span><span class="hs-operator hs-var">%=</span></span><span> </span><span class="annot"><span class="annottext">a -> a </span><a href="#local-6989586621679165314"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span id="line-320"></span><span> </span><span id="local-6989586621679165311"><span class="annot"><span class="annottext">b </span><a href="#local-6989586621679165311"><span class="hs-identifier hs-var">result</span></a></span></span><span> </span><span class="hs-glyph"><-</span><span> </span><span class="annot"><span class="annottext">m b </span><a href="#local-6989586621679165313"><span class="hs-identifier hs-var">act</span></a></span><span> </span><span id="line-321"></span><span> </span><span class="annot"><span class="annottext">BuildT Identity () -> m () forall (m :: * -> *) a. MonadBuild m => Build a -> m a </span><a href="TensorFlow.Build.html#build"><span class="hs-identifier hs-var">build</span></a></span><span> </span><span class="annot"><span class="annottext">(BuildT Identity () -> m ()) -> BuildT Identity () -> m () forall a b. (a -> b) -> a -> b </span><span class="hs-operator hs-var">$</span></span><span> </span><span class="annot"><span class="annottext">Lens' GraphState a forall (f :: * -> *). Identical f => LensLike' f GraphState a </span><a href="#local-6989586621679165315"><span class="hs-identifier hs-var">accessor</span></a></span><span> </span><span class="annot"><span class="annottext">(forall (f :: * -> *). Identical f => LensLike' f GraphState a) -> a -> BuildT Identity () forall s (m :: * -> *) a b. MonadState s m => Setter s s a b -> b -> m () </span><span class="hs-operator hs-var">.=</span></span><span> </span><span class="annot"><span class="annottext">a </span><a href="#local-6989586621679165312"><span class="hs-identifier hs-var">old</span></a></span><span> </span><span id="line-322"></span><span> </span><span class="annot"><span class="annottext">b -> m b forall (m :: * -> *) a. Monad m => a -> m a </span><span class="hs-identifier hs-var">return</span></span><span> </span><span class="annot"><span class="annottext">b </span><a href="#local-6989586621679165311"><span class="hs-identifier hs-var">result</span></a></span><span> </span><span id="line-323"></span><span> </span><span id="line-324"></span><span class="hs-comment">-- | Set a device for all nodes rendered in the given 'Build' action</span><span> </span><span id="line-325"></span><span class="hs-comment">-- (unless further overridden by another use of withDevice).</span><span> </span><span id="line-326"></span><span id="local-6989586621679165309"><span id="local-6989586621679165310"><span class="annot"><a href="TensorFlow.Build.html#withDevice"><span class="hs-identifier hs-type">withDevice</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#MonadBuild"><span class="hs-identifier hs-type">MonadBuild</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165310"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="hs-glyph">=></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Maybe</span></span><span> </span><span class="annot"><a href="TensorFlow.Output.html#Device"><span class="hs-identifier hs-type">Device</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="#local-6989586621679165310"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165309"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="#local-6989586621679165310"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165309"><span class="hs-identifier hs-type">a</span></a></span></span></span><span> </span><span id="line-327"></span><span id="withDevice"><span class="annot"><span class="annottext">withDevice :: Maybe Device -> m a -> m a </span><a href="TensorFlow.Build.html#withDevice"><span class="hs-identifier hs-var hs-var">withDevice</span></a></span></span><span> </span><span id="local-6989586621679165308"><span class="annot"><span class="annottext">d :: Maybe Device </span><a href="#local-6989586621679165308"><span class="hs-identifier hs-var">d</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Lens GraphState GraphState (Maybe Device) (Maybe Device) -> (Maybe Device -> Maybe Device) -> m a -> m a forall (m :: * -> *) a b. MonadBuild m => Lens' GraphState a -> (a -> a) -> m b -> m b </span><a href="TensorFlow.Build.html#withStateLens"><span class="hs-identifier hs-var">withStateLens</span></a></span><span> </span><span class="annot"><span class="annottext">Lens GraphState GraphState (Maybe Device) (Maybe Device) </span><a href="TensorFlow.Build.html#defaultDevice"><span class="hs-identifier hs-var">defaultDevice</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Maybe Device -> Maybe Device -> Maybe Device forall a b. a -> b -> a </span><span class="hs-identifier hs-var">const</span></span><span> </span><span class="annot"><span class="annottext">Maybe Device </span><a href="#local-6989586621679165308"><span class="hs-identifier hs-var">d</span></a></span><span class="hs-special">)</span><span> </span><span id="line-328"></span><span> </span><span id="line-329"></span><span class="hs-comment">-- | Prepend a scope to all nodes rendered in the given 'Build' action.</span><span> </span><span id="line-330"></span><span id="local-6989586621679165305"><span id="local-6989586621679165306"><span class="annot"><a href="TensorFlow.Build.html#withNameScope"><span class="hs-identifier hs-type">withNameScope</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#MonadBuild"><span class="hs-identifier hs-type">MonadBuild</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165306"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="hs-glyph">=></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Text</span></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="#local-6989586621679165306"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165305"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="#local-6989586621679165306"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165305"><span class="hs-identifier hs-type">a</span></a></span></span></span><span> </span><span id="line-331"></span><span id="withNameScope"><span class="annot"><span class="annottext">withNameScope :: Text -> m a -> m a </span><a href="TensorFlow.Build.html#withNameScope"><span class="hs-identifier hs-var hs-var">withNameScope</span></a></span></span><span> </span><span id="local-6989586621679165304"><span class="annot"><span class="annottext">s :: Text </span><a href="#local-6989586621679165304"><span class="hs-identifier hs-var">s</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Lens GraphState GraphState [Scope] [Scope] -> ([Scope] -> [Scope]) -> m a -> m a forall (m :: * -> *) a b. MonadBuild m => Lens' GraphState a -> (a -> a) -> m b -> m b </span><a href="TensorFlow.Build.html#withStateLens"><span class="hs-identifier hs-var">withStateLens</span></a></span><span> </span><span class="annot"><span class="annottext">Lens GraphState GraphState [Scope] [Scope] </span><a href="TensorFlow.Build.html#currentScope"><span class="hs-identifier hs-var">currentScope</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Text -> Scope </span><a href="TensorFlow.Build.html#Scope"><span class="hs-identifier hs-var">Scope</span></a></span><span> </span><span class="annot"><span class="annottext">Text </span><a href="#local-6989586621679165304"><span class="hs-identifier hs-var">s</span></a></span><span> </span><span class="annot"><span class="annottext">Scope -> [Scope] -> [Scope] forall a. a -> [a] -> [a] </span><span class="hs-glyph hs-var">:</span></span><span class="hs-special">)</span><span> </span><span id="line-332"></span><span> </span><span id="line-333"></span><span class="hs-comment">-- | Add control inputs to all nodes rendered in the given 'Build' action.</span><span> </span><span id="line-334"></span><span id="local-6989586621679165302"><span id="local-6989586621679165303"><span class="annot"><a href="TensorFlow.Build.html#withNodeDependencies"><span class="hs-identifier hs-type">withNodeDependencies</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="TensorFlow.Build.html#MonadBuild"><span class="hs-identifier hs-type">MonadBuild</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165303"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="hs-glyph">=></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Set</span></span><span> </span><span class="annot"><a href="TensorFlow.Output.html#NodeName"><span class="hs-identifier hs-type">NodeName</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="#local-6989586621679165303"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165302"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="#local-6989586621679165303"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679165302"><span class="hs-identifier hs-type">a</span></a></span></span></span><span> </span><span id="line-335"></span><span id="withNodeDependencies"><span class="annot"><span class="annottext">withNodeDependencies :: Set NodeName -> m a -> m a </span><a href="TensorFlow.Build.html#withNodeDependencies"><span class="hs-identifier hs-var hs-var">withNodeDependencies</span></a></span></span><span> </span><span id="local-6989586621679165301"><span class="annot"><span class="annottext">nodes :: Set NodeName </span><a href="#local-6989586621679165301"><span class="hs-identifier hs-var">nodes</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Lens GraphState GraphState (Set NodeName) (Set NodeName) -> (Set NodeName -> Set NodeName) -> m a -> m a forall (m :: * -> *) a b. MonadBuild m => Lens' GraphState a -> (a -> a) -> m b -> m b </span><a href="TensorFlow.Build.html#withStateLens"><span class="hs-identifier hs-var">withStateLens</span></a></span><span> </span><span class="annot"><span class="annottext">Lens GraphState GraphState (Set NodeName) (Set NodeName) </span><a href="TensorFlow.Build.html#defaultControlInputs"><span class="hs-identifier hs-var">defaultControlInputs</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Set NodeName -> Set NodeName -> Set NodeName forall a. Semigroup a => a -> a -> a </span><span class="hs-operator hs-var"><></span></span><span> </span><span class="annot"><span class="annottext">Set NodeName </span><a href="#local-6989586621679165301"><span class="hs-identifier hs-var">nodes</span></a></span><span class="hs-special">)</span><span> </span><span id="line-336"></span></pre></body></html>