On Fri, Dec 04, 2009 at 01:43:42PM +0000, Matthias Görgens wrote:<br>&gt; &gt;  _So my strong opinion that solution is only DSL not EDSL_<br>&gt; <br>&gt; Why do you think they will learn your DSL, if they don&#39;t learn any<br>
&gt; other language?<br> I didn&#39;t said that they didn&#39;t learn any language. They learn languages, but<br> only part that is necessary to do particular task. <br>  f.e. ROOT CINT(C++ interpreter) didn&#39;t distinguish object from pointer to object, i.e.  <br>
  statement <a href="http://h.ls">h.ls</a>(); works as well as h-&gt;ls(); independently of either h has type TH1F or TH1F*, <br>  so beginning ROOT user didn&#39;t need know what is pointer, memory management helps him.<br>
 But early or latter one need to write more complicated code,<br> then one need to spend months to reading big C++ books, and struggling with compilers errors, segfaults etc..^(1) (instead of doing assigned task!) or, what is more usually, trying Ad hoc methods for writing software.<br>
 So people will learn DSL because:<br>  1. DSL is simpler than general purpose language<br>  2. DSL describe already known domain for user, (one probably don&#39;t need monads, continuations, virtual methods, template instantiation etc...etc...)<br>
        so learning is easy, and didn&#39;t consume much time.<br><br>&gt;  And if your DSL includes general purpose stuff, like<br>&gt; functions, control structures, data structures, you&#39;ll re-invent the<br>&gt; wheel.  Probably porly. <br>
 You didn&#39;t need to reinvent the wheel, because you DSL compiler can <br>produce Haskell code: <br>   DSL -&gt; General Purpose Language -&gt; Executable<br> And ever if you do, it saves allot of time of experts.<br><br>
 Roman.<br><br>(1) In Haskell this probably will sound like: reading allot of small tutorials and articles, grokking monads,<br>   struggling with type-check errors, infinite loops, laziness, etc...<br><br>