Hi Benjamin,<br><br><div class="gmail_quote">On Fri, Jun 1, 2012 at 9:54 PM, Benjamin Redelings wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">   I have written an interpreter that operates on the lambda calculus augmented with letrec, constructors, case, primitive objects, and builtin operations.  I&#39;d like to display the internal state of the intepreter at various points so that I can, um, debug the &quot;programs&quot; that I&#39;ve written.<br>


<br>
    Currently I&#39;ve got about 3500 nodes, and I&#39;m dumping a graph that I format using the &#39;dot&#39; program in graphviz. </blockquote><div> </div><div>[...]</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


    However, it would be nice to know of any programs that are better suited for this.  For example, if I could write &lt;&gt;*&lt;&gt; and draw arrows from the placeholders &quot;&lt;&gt;&quot; to the memory location being referenced, that would be easier to read.  This is done here <a href="http://en.wikibooks.org/wiki/Haskell/Graph_reduction" target="_blank">http://en.wikibooks.org/wiki/<u></u>Haskell/Graph_reduction</a> to illustrate that &#39;square (1+2)&#39; doesn&#39;t evaluate 1+2 twice.  Any ideas?<br>

</blockquote><div><br></div><div><div>This may not answer your question, but it might be related and/or helpful:</div><div><br></div><div>  <a href="http://rochel.info/#graph-rewriting">http://rochel.info/#graph-rewriting</a></div>

<div><br></div><div>Regards,</div><div>Sean</div></div></div>