Hi Oleg,<br><br>From what I understand, you are using a list of integers to encode a path to a subterm. This is a practical and lightweight implementation, but less type-safe: it is easy to encode annotations that do not correspond to any value. Also, it cannot guarantee, with types alone, that every subterm is annotated.<br>

<br>Our solution, on the other way, requires more intrusive changes to the user&#39;s datatype.<br><br><br>Cheers,<br>Pedro<br><br><div class="gmail_quote">On Tue, Jul 20, 2010 at 11:06,  <span dir="ltr">&lt;<a href="mailto:oleg@okmij.org">oleg@okmij.org</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div class="im"><br>
Jose&#39; Romildo Malaquias wrote:<br>
<br>
&gt; I am writing here to ask suggestions on how to annotate an ast with<br>
&gt; types (or any other information that would be relevant in a compiler<br>
&gt; phase) in Haskell.<br>
<br>
</div>There is also a general way of annotating AST post factum, described in<br>
        <a href="http://okmij.org/ftp/Algorithms.html#tree-annot" target="_blank">http://okmij.org/ftp/Algorithms.html#tree-annot</a><br>
<br>
The method lets one attach arbitrarily many annotations to an already<br>
built AST, *without* the need to change the definition of the<br>
datatype. One does not even have to anticipate annotations! The method<br>
would work with your AST<br>
<div class="im"><br>
&gt;   data Exp<br>
&gt;     = IntExp Integer<br>
&gt;     | VarExp Symbol<br>
&gt;     | AssignExp Symbol Exp<br>
<br>
</div>as _it is_, without any modifications -- neither to the data type<br>
definition, nor to the tree.<br>
<br>
The method was demonstrated when writing a compiler of sorts:<br>
annotating an AST with an inferred type for each node. If the type<br>
inference fails, we can still print out the inferred types for the<br>
good subexpressions.<br>
<div><div></div><div class="h5"><br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
</div></div></blockquote></div><br>