Make your own expression type and make it an instance of the Num typeclass. <div>Then you can build your expression using the usual operators and then use show to convert to a string.</div><div><br></div><div>For example: <a href="https://github.com/jvranish/grhug/blob/master/SymbolicDifferentiation/SymbolicDifferentiation.hs">https://github.com/jvranish/grhug/blob/master/SymbolicDifferentiation/SymbolicDifferentiation.hs</a><br>
<div><br></div><div>It probably does more than you want, but you should be able to get the basic idea.</div><div><br></div><div>The really slick thing about it is that you can use expression type on any function that takes a Num and you&#39;ll get a representation of the computation that took place to get the result.</div>
<div><br></div><div>For example:</div><div>  show (baw a b c :: Int)  -- will show you an int</div><div>and </div><div>  show (baw a b c :: Expr)  -- will give you &quot;(a + b) * c&quot;  (well... a, b, c will be replace by whatever you passed in, but you can make them variable names just the same)</div>
<div><br></div><div>- Job</div><div><br><br><div class="gmail_quote">On Fri, Mar 4, 2011 at 3:32 PM, Evgeny Grablyk <span dir="ltr">&lt;<a href="mailto:evgeny.grablyk@gmail.com">evgeny.grablyk@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Hello!<br>
<br>
I was wondering if it was possible to &quot;convert&quot; a function (which may<br>
also call functions) to a plain list of operators on parameters.<br>
Example:<br>
<br>
foo a b = a + b<br>
bar a b = a * b<br>
<br>
baw a b c = bar (foo a b) c<br>
baw&#39; a b c = (a + b) * c<br>
<br>
Any way to get `baw&#39;&#39; from `baw&#39;?  Preferrably as a String.<br>
<font color="#888888"><br>
--<br>
Evgeny<br>
<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>
</font></blockquote></div><br></div></div>