<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">-- Copyright 2016 TensorFlow authors.</span><span>
</span><a name="line-2"></a><span class="hs-comment">--</span><span>
</span><a name="line-3"></a><span class="hs-comment">-- Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span><span>
</span><a name="line-4"></a><span class="hs-comment">-- you may not use this file except in compliance with the License.</span><span>
</span><a name="line-5"></a><span class="hs-comment">-- You may obtain a copy of the License at</span><span>
</span><a name="line-6"></a><span class="hs-comment">--</span><span>
</span><a name="line-7"></a><span class="hs-comment">--     http://www.apache.org/licenses/LICENSE-2.0</span><span>
</span><a name="line-8"></a><span class="hs-comment">--</span><span>
</span><a name="line-9"></a><span class="hs-comment">-- Unless required by applicable law or agreed to in writing, software</span><span>
</span><a name="line-10"></a><span class="hs-comment">-- distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span><span>
</span><a name="line-11"></a><span class="hs-comment">-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span>
</span><a name="line-12"></a><span class="hs-comment">-- See the License for the specific language governing permissions and</span><span>
</span><a name="line-13"></a><span class="hs-comment">-- limitations under the License.</span><span>
</span><a name="line-14"></a><span>
</span><a name="line-15"></a><span class="hs-pragma">{-# LANGUAGE GeneralizedNewtypeDeriving #-}</span><span>
</span><a name="line-16"></a><span class="hs-pragma">{-# LANGUAGE OverloadedStrings #-}</span><span>
</span><a name="line-17"></a><span class="hs-pragma">{-# LANGUAGE Rank2Types #-}</span><span>
</span><a name="line-18"></a><span class="hs-pragma">{-# LANGUAGE ScopedTypeVariables #-}</span><span>
</span><a name="line-19"></a><span>
</span><a name="line-20"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">TensorFlow</span><span class="hs-operator">.</span><span class="hs-identifier">Output</span><span>
</span><a name="line-21"></a><span>    </span><span class="hs-special">(</span><span> </span><a href="TensorFlow.Output.html#ControlNode"><span class="hs-identifier hs-type">ControlNode</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-22"></a><span>    </span><span class="hs-special">,</span><span> </span><a href="TensorFlow.Output.html#Device"><span class="hs-identifier hs-type">Device</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-23"></a><span>    </span><span class="hs-comment">-- * Ops</span><span>
</span><a name="line-24"></a><span>    </span><span class="hs-special">,</span><span> </span><a href="TensorFlow.Output.html#NodeName"><span class="hs-identifier hs-type">NodeName</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-25"></a><span>    </span><span class="hs-special">,</span><span> </span><a href="TensorFlow.Output.html#OpDef"><span class="hs-identifier hs-type">OpDef</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-26"></a><span>    </span><span class="hs-special">,</span><span> </span><a href="TensorFlow.Output.html#opName"><span class="hs-identifier hs-var">opName</span></a><span>
</span><a name="line-27"></a><span>    </span><span class="hs-special">,</span><span> </span><a href="TensorFlow.Output.html#opType"><span class="hs-identifier hs-var">opType</span></a><span>
</span><a name="line-28"></a><span>    </span><span class="hs-special">,</span><span> </span><a href="TensorFlow.Output.html#opAttr"><span class="hs-identifier hs-var">opAttr</span></a><span>
</span><a name="line-29"></a><span>    </span><span class="hs-special">,</span><span> </span><a href="TensorFlow.Output.html#opInputs"><span class="hs-identifier hs-var">opInputs</span></a><span>
</span><a name="line-30"></a><span>    </span><span class="hs-special">,</span><span> </span><a href="TensorFlow.Output.html#opControlInputs"><span class="hs-identifier hs-var">opControlInputs</span></a><span>
</span><a name="line-31"></a><span>    </span><span class="hs-special">,</span><span> </span><a href="TensorFlow.Output.html#OpType"><span class="hs-identifier hs-type">OpType</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-32"></a><span>    </span><span class="hs-special">,</span><span> </span><a href="TensorFlow.Output.html#OutputIx"><span class="hs-identifier hs-type">OutputIx</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-33"></a><span>    </span><span class="hs-special">,</span><span> </span><a href="TensorFlow.Output.html#Output"><span class="hs-identifier hs-type">Output</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-34"></a><span>    </span><span class="hs-special">,</span><span> </span><a href="TensorFlow.Output.html#output"><span class="hs-identifier hs-var">output</span></a><span>
</span><a name="line-35"></a><span>    </span><span class="hs-special">,</span><span> </span><a href="TensorFlow.Output.html#PendingNodeName"><span class="hs-identifier hs-type">PendingNodeName</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-36"></a><span>    </span><span class="hs-special">)</span><span>  </span><span class="hs-keyword">where</span><span>
</span><a name="line-37"></a><span>
</span><a name="line-38"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-identifier">Data</span><span class="hs-operator">.</span><span class="hs-identifier">Map</span><span class="hs-operator">.</span><span class="hs-identifier">Strict</span><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">Map</span><span>
</span><a name="line-39"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data</span><span class="hs-operator">.</span><span class="hs-identifier">String</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">IsString</span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-40"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data</span><span class="hs-operator">.</span><span class="hs-identifier">Text</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Text</span><span class="hs-special">)</span><span>
</span><a name="line-41"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-identifier">Data</span><span class="hs-operator">.</span><span class="hs-identifier">Text</span><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">Text</span><span>
</span><a name="line-42"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Lens</span><span class="hs-operator">.</span><span class="hs-identifier">Family2</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Lens'</span><span class="hs-special">)</span><span>
</span><a name="line-43"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Lens</span><span class="hs-operator">.</span><span class="hs-identifier">Family2</span><span class="hs-operator">.</span><span class="hs-identifier">Unchecked</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">lens</span><span class="hs-special">)</span><span>
</span><a name="line-44"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Proto</span><span class="hs-operator">.</span><span class="hs-identifier">Tensorflow</span><span class="hs-operator">.</span><span class="hs-identifier">Core</span><span class="hs-operator">.</span><span class="hs-identifier">Framework</span><span class="hs-operator">.</span><span class="hs-identifier">AttrValue</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">AttrValue</span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-45"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data</span><span class="hs-operator">.</span><span class="hs-identifier">Default</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">def</span><span class="hs-special">)</span><span>
</span><a name="line-46"></a><span class="hs-keyword">import</span><span> </span><a href="TensorFlow.Types.html"><span class="hs-identifier">TensorFlow</span><span class="hs-operator">.</span><span class="hs-identifier">Types</span></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Types.html#Attribute"><span class="hs-identifier hs-type">Attribute</span></a><span class="hs-special">,</span><span> </span><a href="TensorFlow.Types.html#attrLens"><span class="hs-identifier hs-var">attrLens</span></a><span class="hs-special">)</span><span>
</span><a name="line-47"></a><span>
</span><a name="line-48"></a><span class="hs-comment">-- | A type of graph node which has no outputs. These nodes are</span><span>
</span><a name="line-49"></a><span class="hs-comment">-- valuable for causing side effects when they are run.</span><span>
</span><a name="line-50"></a><span class="hs-keyword">newtype</span><span> </span><a name="ControlNode"><a href="TensorFlow.Output.html#ControlNode"><span class="hs-identifier">ControlNode</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a name="ControlNode"><a href="TensorFlow.Output.html#ControlNode"><span class="hs-identifier">ControlNode</span></a></a><span> </span><span class="hs-special">{</span><span> </span><a name="unControlNode"><a href="TensorFlow.Output.html#unControlNode"><span class="hs-identifier">unControlNode</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><a href="TensorFlow.Output.html#NodeName"><span class="hs-identifier hs-type">NodeName</span></a><span> </span><span class="hs-special">}</span><span>
</span><a name="line-51"></a><span>
</span><a name="line-52"></a><span class="hs-comment">-- | The type of op of a node in the graph.  This corresponds to the proto field</span><span>
</span><a name="line-53"></a><span class="hs-comment">-- NodeDef.op.</span><span>
</span><a name="line-54"></a><span class="hs-keyword">newtype</span><span> </span><a name="OpType"><a href="TensorFlow.Output.html#OpType"><span class="hs-identifier">OpType</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a name="OpType"><a href="TensorFlow.Output.html#OpType"><span class="hs-identifier">OpType</span></a></a><span> </span><span class="hs-special">{</span><span> </span><a name="unOpType"><a href="TensorFlow.Output.html#unOpType"><span class="hs-identifier">unOpType</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Text</span><span> </span><span class="hs-special">}</span><span>
</span><a name="line-55"></a><span>    </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Eq</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Ord</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Show</span><span class="hs-special">)</span><span>
</span><a name="line-56"></a><span>
</span><a name="line-57"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-identifier hs-type">IsString</span><span> </span><a href="TensorFlow.Output.html#OpType"><span class="hs-identifier hs-type">OpType</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-58"></a><span>    </span><a name="local-3458764513820541114"><span class="hs-identifier">fromString</span></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Output.html#OpType"><span class="hs-identifier hs-var">OpType</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">Text</span><span class="hs-operator hs-var">.</span><span class="hs-identifier hs-var">pack</span><span>
</span><a name="line-59"></a><span>
</span><a name="line-60"></a><span class="hs-comment">-- | An output of a TensorFlow node.</span><span>
</span><a name="line-61"></a><span class="hs-keyword">data</span><span> </span><a name="Output"><a href="TensorFlow.Output.html#Output"><span class="hs-identifier">Output</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a name="Output"><a href="TensorFlow.Output.html#Output"><span class="hs-identifier">Output</span></a></a><span> </span><span class="hs-special">{</span><a name="outputIndex"><a href="TensorFlow.Output.html#outputIndex"><span class="hs-identifier">outputIndex</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-glyph">!</span><a href="TensorFlow.Output.html#OutputIx"><span class="hs-identifier hs-type">OutputIx</span></a><span class="hs-special">,</span><span> </span><a name="outputNodeName"><a href="TensorFlow.Output.html#outputNodeName"><span class="hs-identifier">outputNodeName</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-glyph">!</span><a href="TensorFlow.Output.html#NodeName"><span class="hs-identifier hs-type">NodeName</span></a><span class="hs-special">}</span><span>
</span><a name="line-62"></a><span>    </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Eq</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Ord</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Show</span><span class="hs-special">)</span><span>
</span><a name="line-63"></a><span>
</span><a name="line-64"></a><span class="hs-identifier">output</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="TensorFlow.Output.html#OutputIx"><span class="hs-identifier hs-type">OutputIx</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="TensorFlow.Output.html#NodeName"><span class="hs-identifier hs-type">NodeName</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="TensorFlow.Output.html#Output"><span class="hs-identifier hs-type">Output</span></a><span>
</span><a name="line-65"></a><a name="output"><a href="TensorFlow.Output.html#output"><span class="hs-identifier">output</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Output.html#Output"><span class="hs-identifier hs-var">Output</span></a><span>
</span><a name="line-66"></a><span>
</span><a name="line-67"></a><span class="hs-keyword">newtype</span><span> </span><a name="OutputIx"><a href="TensorFlow.Output.html#OutputIx"><span class="hs-identifier">OutputIx</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a name="OutputIx"><a href="TensorFlow.Output.html#OutputIx"><span class="hs-identifier">OutputIx</span></a></a><span> </span><span class="hs-special">{</span><span> </span><a name="unOutputIx"><a href="TensorFlow.Output.html#unOutputIx"><span class="hs-identifier">unOutputIx</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Int</span><span> </span><span class="hs-special">}</span><span>
</span><a name="line-68"></a><span>    </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Eq</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Ord</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Num</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Enum</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Show</span><span class="hs-special">)</span><span>
</span><a name="line-69"></a><span>
</span><a name="line-70"></a><span class="hs-comment">-- | A device that a node can be assigned to.</span><span>
</span><a name="line-71"></a><span class="hs-comment">-- There's a naming convention where the device names</span><span>
</span><a name="line-72"></a><span class="hs-comment">-- are constructed from job and replica names.</span><span>
</span><a name="line-73"></a><span class="hs-keyword">newtype</span><span> </span><a name="Device"><a href="TensorFlow.Output.html#Device"><span class="hs-identifier">Device</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a name="Device"><a href="TensorFlow.Output.html#Device"><span class="hs-identifier">Device</span></a></a><span> </span><span class="hs-special">{</span><a name="deviceName"><a href="TensorFlow.Output.html#deviceName"><span class="hs-identifier">deviceName</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Text</span><span class="hs-special">}</span><span>
</span><a name="line-74"></a><span>    </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Eq</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Ord</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">IsString</span><span class="hs-special">)</span><span>
</span><a name="line-75"></a><span>
</span><a name="line-76"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-identifier hs-type">Show</span><span> </span><a href="TensorFlow.Output.html#Device"><span class="hs-identifier hs-type">Device</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-77"></a><span>    </span><a name="local-8214565720323794258"><span class="hs-identifier">show</span></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Output.html#Device"><span class="hs-identifier hs-var">Device</span></a><span> </span><a name="local-6989586621679112436"><a href="#local-6989586621679112436"><span class="hs-identifier">d</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">show</span><span> </span><a href="#local-6989586621679112436"><span class="hs-identifier hs-var">d</span></a><span>
</span><a name="line-78"></a><span>
</span><a name="line-79"></a><span class="hs-comment">-- | Op definition. This corresponds somewhat to the 'NodeDef' proto.</span><span>
</span><a name="line-80"></a><span class="hs-keyword">data</span><span> </span><a name="OpDef"><a href="TensorFlow.Output.html#OpDef"><span class="hs-identifier">OpDef</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a name="OpDef"><a href="TensorFlow.Output.html#OpDef"><span class="hs-identifier">OpDef</span></a></a><span>
</span><a name="line-81"></a><span>    </span><span class="hs-special">{</span><span> </span><a name="_opName"><a href="TensorFlow.Output.html#_opName"><span class="hs-identifier">_opName</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-glyph">!</span><a href="TensorFlow.Output.html#PendingNodeName"><span class="hs-identifier hs-type">PendingNodeName</span></a><span>
</span><a name="line-82"></a><span>    </span><span class="hs-special">,</span><span> </span><a name="_opType"><a href="TensorFlow.Output.html#_opType"><span class="hs-identifier">_opType</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-glyph">!</span><a href="TensorFlow.Output.html#OpType"><span class="hs-identifier hs-type">OpType</span></a><span>
</span><a name="line-83"></a><span>    </span><span class="hs-special">,</span><span> </span><a name="_opAttrs"><a href="TensorFlow.Output.html#_opAttrs"><span class="hs-identifier">_opAttrs</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-glyph">!</span><span class="hs-special">(</span><span class="hs-identifier hs-type">Map</span><span class="hs-operator hs-type">.</span><span class="hs-identifier hs-type">Map</span><span> </span><span class="hs-identifier hs-type">Text</span><span> </span><span class="hs-identifier hs-type">AttrValue</span><span class="hs-special">)</span><span>
</span><a name="line-84"></a><span>    </span><span class="hs-special">,</span><span> </span><a name="_opInputs"><a href="TensorFlow.Output.html#_opInputs"><span class="hs-identifier">_opInputs</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><a href="TensorFlow.Output.html#Output"><span class="hs-identifier hs-type">Output</span></a><span class="hs-special">]</span><span>
</span><a name="line-85"></a><span>    </span><span class="hs-special">,</span><span> </span><a name="_opControlInputs"><a href="TensorFlow.Output.html#_opControlInputs"><span class="hs-identifier">_opControlInputs</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><a href="TensorFlow.Output.html#NodeName"><span class="hs-identifier hs-type">NodeName</span></a><span class="hs-special">]</span><span>
</span><a name="line-86"></a><span>    </span><span class="hs-special">}</span><span>  </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Eq</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Ord</span><span class="hs-special">)</span><span>
</span><a name="line-87"></a><span>
</span><a name="line-88"></a><span class="hs-comment">-- | The name specified for an unrendered Op.  If an Op has an</span><span>
</span><a name="line-89"></a><span class="hs-comment">-- ImplicitName, it will be assigned based on the opType plus a</span><span>
</span><a name="line-90"></a><span class="hs-comment">-- unique identifier.  Does not contain the &quot;scope&quot; prefix.</span><span>
</span><a name="line-91"></a><span class="hs-keyword">data</span><span> </span><a name="PendingNodeName"><a href="TensorFlow.Output.html#PendingNodeName"><span class="hs-identifier">PendingNodeName</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a name="ExplicitName"><a href="TensorFlow.Output.html#ExplicitName"><span class="hs-identifier">ExplicitName</span></a></a><span> </span><span class="hs-glyph">!</span><span class="hs-identifier hs-type">Text</span><span> </span><span class="hs-glyph">|</span><span> </span><a name="ImplicitName"><a href="TensorFlow.Output.html#ImplicitName"><span class="hs-identifier">ImplicitName</span></a></a><span>
</span><a name="line-92"></a><span>    </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Eq</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Ord</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Show</span><span class="hs-special">)</span><span>
</span><a name="line-93"></a><span>
</span><a name="line-94"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-identifier hs-type">IsString</span><span> </span><a href="TensorFlow.Output.html#PendingNodeName"><span class="hs-identifier hs-type">PendingNodeName</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-95"></a><span>    </span><a name="local-3458764513820541114"><span class="hs-identifier">fromString</span></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Output.html#ExplicitName"><span class="hs-identifier hs-var">ExplicitName</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">fromString</span><span>
</span><a name="line-96"></a><span>
</span><a name="line-97"></a><span class="hs-comment">-- | The name of a node in the graph.  This corresponds to the proto field</span><span>
</span><a name="line-98"></a><span class="hs-comment">-- NodeDef.name.  Includes the scope prefix (if any) and a unique identifier</span><span>
</span><a name="line-99"></a><span class="hs-comment">-- (if the node was implicitly named).</span><span>
</span><a name="line-100"></a><span class="hs-keyword">newtype</span><span> </span><a name="NodeName"><a href="TensorFlow.Output.html#NodeName"><span class="hs-identifier">NodeName</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a name="NodeName"><a href="TensorFlow.Output.html#NodeName"><span class="hs-identifier">NodeName</span></a></a><span> </span><span class="hs-special">{</span><span> </span><a name="unNodeName"><a href="TensorFlow.Output.html#unNodeName"><span class="hs-identifier">unNodeName</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Text</span><span> </span><span class="hs-special">}</span><span>
</span><a name="line-101"></a><span>    </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Eq</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Ord</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-type">Show</span><span class="hs-special">)</span><span>
</span><a name="line-102"></a><span>
</span><a name="line-103"></a><span class="hs-identifier">opName</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Lens'</span><span> </span><a href="TensorFlow.Output.html#OpDef"><span class="hs-identifier hs-type">OpDef</span></a><span> </span><a href="TensorFlow.Output.html#PendingNodeName"><span class="hs-identifier hs-type">PendingNodeName</span></a><span>
</span><a name="line-104"></a><a name="opName"><a href="TensorFlow.Output.html#opName"><span class="hs-identifier">opName</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">lens</span><span> </span><span class="hs-identifier">_opName</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><a name="local-6989586621679112401"><a href="#local-6989586621679112401"><span class="hs-identifier">o</span></a></a><span> </span><a name="local-6989586621679112402"><a href="#local-6989586621679112402"><span class="hs-identifier">x</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679112401"><span class="hs-identifier hs-var">o</span></a><span> </span><span class="hs-special">{</span><span class="hs-identifier">_opName</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679112402"><span class="hs-identifier hs-var">x</span></a><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><a name="line-105"></a><span>
</span><a name="line-106"></a><span class="hs-identifier">opType</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Lens'</span><span> </span><a href="TensorFlow.Output.html#OpDef"><span class="hs-identifier hs-type">OpDef</span></a><span> </span><a href="TensorFlow.Output.html#OpType"><span class="hs-identifier hs-type">OpType</span></a><span>
</span><a name="line-107"></a><a name="opType"><a href="TensorFlow.Output.html#opType"><span class="hs-identifier">opType</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">lens</span><span> </span><span class="hs-identifier">_opType</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><a name="local-6989586621679112403"><a href="#local-6989586621679112403"><span class="hs-identifier">o</span></a></a><span> </span><a name="local-6989586621679112404"><a href="#local-6989586621679112404"><span class="hs-identifier">x</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679112403"><span class="hs-identifier hs-var">o</span></a><span> </span><span class="hs-special">{</span><span> </span><span class="hs-identifier">_opType</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679112404"><span class="hs-identifier hs-var">x</span></a><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><a name="line-108"></a><span>
</span><a name="line-109"></a><span class="hs-identifier">opAttr</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="TensorFlow.Types.html#Attribute"><span class="hs-identifier hs-type">Attribute</span></a><span> </span><a href="#local-6989586621679112400"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-identifier hs-type">Text</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Lens'</span><span> </span><a href="TensorFlow.Output.html#OpDef"><span class="hs-identifier hs-type">OpDef</span></a><span> </span><a href="#local-6989586621679112400"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-110"></a><a name="opAttr"><a href="TensorFlow.Output.html#opAttr"><span class="hs-identifier">opAttr</span></a></a><span> </span><a name="local-6989586621679112405"><a href="#local-6989586621679112405"><span class="hs-identifier">n</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">lens</span><span> </span><span class="hs-identifier">_opAttrs</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><a name="local-6989586621679112406"><a href="#local-6989586621679112406"><span class="hs-identifier">o</span></a></a><span> </span><a name="local-6989586621679112407"><a href="#local-6989586621679112407"><span class="hs-identifier">x</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679112406"><span class="hs-identifier hs-var">o</span></a><span> </span><span class="hs-special">{</span><span class="hs-identifier">_opAttrs</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679112407"><span class="hs-identifier hs-var">x</span></a><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><a name="line-111"></a><span>              </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">lens</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">Map</span><span class="hs-operator hs-var">.</span><span class="hs-identifier hs-var">findWithDefault</span><span> </span><span class="hs-identifier hs-var">def</span><span> </span><a href="#local-6989586621679112405"><span class="hs-identifier hs-var">n</span></a><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">flip</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">Map</span><span class="hs-operator hs-var">.</span><span class="hs-identifier hs-var">insert</span><span> </span><a href="#local-6989586621679112405"><span class="hs-identifier hs-var">n</span></a><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-112"></a><span>              </span><span class="hs-operator hs-var">.</span><span> </span><a href="TensorFlow.Types.html#attrLens"><span class="hs-identifier hs-var">attrLens</span></a><span>
</span><a name="line-113"></a><span>
</span><a name="line-114"></a><span class="hs-identifier">opInputs</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Lens'</span><span> </span><a href="TensorFlow.Output.html#OpDef"><span class="hs-identifier hs-type">OpDef</span></a><span> </span><span class="hs-special">[</span><a href="TensorFlow.Output.html#Output"><span class="hs-identifier hs-type">Output</span></a><span class="hs-special">]</span><span>
</span><a name="line-115"></a><a name="opInputs"><a href="TensorFlow.Output.html#opInputs"><span class="hs-identifier">opInputs</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">lens</span><span> </span><span class="hs-identifier">_opInputs</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><a name="local-6989586621679112408"><a href="#local-6989586621679112408"><span class="hs-identifier">o</span></a></a><span> </span><a name="local-6989586621679112409"><a href="#local-6989586621679112409"><span class="hs-identifier">x</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679112408"><span class="hs-identifier hs-var">o</span></a><span> </span><span class="hs-special">{</span><span class="hs-identifier">_opInputs</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679112409"><span class="hs-identifier hs-var">x</span></a><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><a name="line-116"></a><span>
</span><a name="line-117"></a><span class="hs-identifier">opControlInputs</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Lens'</span><span> </span><a href="TensorFlow.Output.html#OpDef"><span class="hs-identifier hs-type">OpDef</span></a><span> </span><span class="hs-special">[</span><a href="TensorFlow.Output.html#NodeName"><span class="hs-identifier hs-type">NodeName</span></a><span class="hs-special">]</span><span>
</span><a name="line-118"></a><a name="opControlInputs"><a href="TensorFlow.Output.html#opControlInputs"><span class="hs-identifier">opControlInputs</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">lens</span><span> </span><span class="hs-identifier">_opControlInputs</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><a name="local-6989586621679112410"><a href="#local-6989586621679112410"><span class="hs-identifier">o</span></a></a><span> </span><a name="local-6989586621679112411"><a href="#local-6989586621679112411"><span class="hs-identifier">x</span></a></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679112410"><span class="hs-identifier hs-var">o</span></a><span> </span><span class="hs-special">{</span><span class="hs-identifier">_opControlInputs</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679112411"><span class="hs-identifier hs-var">x</span></a><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><a name="line-119"></a><span>
</span><a name="line-120"></a><span class="hs-comment">-- TODO(gnezdo): IsString instance is weird and we should move that</span><span>
</span><a name="line-121"></a><span class="hs-comment">-- code into a Build function</span><span>
</span><a name="line-122"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-identifier hs-type">IsString</span><span> </span><a href="TensorFlow.Output.html#Output"><span class="hs-identifier hs-type">Output</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-123"></a><span>    </span><a name="local-3458764513820541114"><span class="hs-identifier">fromString</span></a><span> </span><a name="local-6989586621679112412"><a href="#local-6989586621679112412"><span class="hs-identifier">s</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="hs-identifier hs-var">break</span><span> </span><span class="hs-special">(</span><span class="hs-operator hs-var">==</span><span class="hs-char">':'</span><span class="hs-special">)</span><span> </span><a href="#local-6989586621679112412"><span class="hs-identifier hs-var">s</span></a><span> </span><span class="hs-keyword">of</span><span>
</span><a name="line-124"></a><span>        </span><span class="hs-special">(</span><a name="local-6989586621679112414"><a href="#local-6989586621679112414"><span class="hs-identifier">n</span></a></a><span class="hs-special">,</span><span> </span><span class="hs-char">':'</span><span class="hs-glyph">:</span><a name="local-6989586621679112415"><a href="#local-6989586621679112415"><span class="hs-identifier">ixStr</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">|</span><span> </span><span class="hs-special">[</span><span class="hs-special">(</span><a name="local-6989586621679112435"><a href="#local-6989586621679112435"><span class="hs-identifier">ix</span></a></a><span class="hs-special">,</span><span> </span><span class="hs-string">&quot;&quot;</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">String</span><span class="hs-special">)</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-identifier hs-var">read</span><span> </span><a href="#local-6989586621679112415"><span class="hs-identifier hs-var">ixStr</span></a><span>
</span><a name="line-125"></a><span>                         </span><span class="hs-glyph">-&gt;</span><span> </span><a href="TensorFlow.Output.html#Output"><span class="hs-identifier hs-var">Output</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">fromInteger</span><span> </span><a href="#local-6989586621679112435"><span class="hs-identifier hs-var">ix</span></a><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="#local-6989586621679112413"><span class="hs-identifier hs-var">assigned</span></a><span> </span><a href="#local-6989586621679112414"><span class="hs-identifier hs-var">n</span></a><span>
</span><a name="line-126"></a><span>        </span><span class="hs-identifier">_</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="TensorFlow.Output.html#Output"><span class="hs-identifier hs-var">Output</span></a><span> </span><span class="hs-number">0</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="#local-6989586621679112413"><span class="hs-identifier hs-var">assigned</span></a><span> </span><a href="#local-6989586621679112412"><span class="hs-identifier hs-var">s</span></a><span>
</span><a name="line-127"></a><span>     </span><span class="hs-keyword">where</span><span> </span><a name="local-6989586621679112413"><a href="#local-6989586621679112413"><span class="hs-identifier">assigned</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Output.html#NodeName"><span class="hs-identifier hs-var">NodeName</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">Text</span><span class="hs-operator hs-var">.</span><span class="hs-identifier hs-var">pack</span><span>
</span><a name="line-128"></a></pre></body></html>