<br><br><div class="gmail_quote">On Thu, Jun 18, 2009 at 12:26 AM, Jason Dagit <span dir="ltr">&lt;<a href="mailto:dagit@codersbase.com">dagit@codersbase.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br><br><div class="gmail_quote"><div class="im">On Wed, Jun 17, 2009 at 9:53 PM, Vasili I. Galchin <span dir="ltr">&lt;<a href="mailto:vigalchin@gmail.com" target="_blank">vigalchin@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

Hello,<br><br>     Let me change the subject ... I think everybody understood my &quot;thrust&quot; but let me make more provocative. Don, please let me expose my ignorance for the greater good and time my personal scorn ;^) ... &quot;EDSL&quot; time  =&gt; Embedded Domain-Specific Language?? If so, can you please be more specific! I don&#39;t mind to be a grunt for Haskell.</blockquote>

</div><div><br>Yes, EDSL is Embedded Domain-Specific Language.  Although, I&#39;m not sure I understand what you are asking.  I looked at the wiki page which Conal created and he does mention using an EDSL in Haskell to generate code.  Perhaps this is what you want to know more about?<br>

<br>There is a paper linked from the wiki page that should help a lot with answering questions you have about the technique.  For a simple example of how it can work, I wrote a program called Autoproc that &#39;compiles&#39; the haskell EDSL into a procmail recipe.  You can find the source code here:<br>

darcs get <a href="http://projects.codersbase.com/repos/autoproc/" target="_blank">http://projects.codersbase.com/repos/autoproc/</a></div></div></blockquote><div>        ^^^ cool .. thx. <br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="gmail_quote"><div><br><br>It&#39;s really not much code so it should be easy to wrap your mind around it.  I call the above code simple, but it works quite well and illustrates that a little bit of Haskell can go a long ways :)</div>
</div></blockquote><div><br>       ;^) <br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="gmail_quote"><div><br>
<br>How it works is that the expressions you code up in Haskell build up values which correspond to the abstract syntax, or your intermediate representation.  You can then transform that representation and do whatever a compiler or translator would normally do and the target format is some other language or machine code.</div>
</div></blockquote><div>      . let me read carefully .. thx. <br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="gmail_quote">
<div><br>
<br>This technique allows you to reuse the facilites of the host language, such as strong static typing and laziness, the parser, standard libs and so on.  It&#39;s a great way to prototype a language and work out the kinks before you invest in making a stand alone implementation.  And all that aside, it&#39;s just plain fun.</div>
</div></blockquote><div><br>           again ;^)<br><br>Vasili<br> <br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="gmail_quote">
<div><br>
<br></div></div>I hope that helps,<br><font color="#888888">Jason<br>
</font></blockquote></div><br>