On Mon, Feb 8, 2010 at 8:16 PM, John Meacham <span dir="ltr">&lt;<a href="mailto:john@repetae.net">john@repetae.net</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br><div class="im">
&gt; I expect others have forethought and perhaps even experimented with such<br>
&gt; a language. Are there any dangers to be wary of that undo the entire<br>
&gt; endeavour?<br>
<br>
</div>There have been a couple papers published on it, the main sticking point<br>
seems to be tail call elimination. When targeting real hardware you<br>
always had the option of dropping to assembly to do a direct jump, but<br>
there isn&#39;t an equivalent in the JVM. If you look up tail call + jvm you<br>
will probably get a few hits. I believe there are even a couple haskell<br>
specific papers on the issue.<br></blockquote><div><br>One of the easiest approaches to this comes from the scheme folks and I&#39;ve been able to employ it fairly effectively in toy compilers. It doesn&#39;t require anything from the host language except exceptions and you can use it to evaluate spineless tagless g-machine frames mostly on the native/VM stack fairly easily. The biggest problem is the generated code bloat factor of about 2-3x. <br>
<br><a href="http://www.ccs.neu.edu/scheme/pubs/stackhack4.html">http://www.ccs.neu.edu/scheme/pubs/stackhack4.html</a><br><a href="http://www.cs.brown.edu/~sk/Publications/Papers/Published/pcmkf-cont-from-gen-stack-insp/">http://www.cs.brown.edu/~sk/Publications/Papers/Published/pcmkf-cont-from-gen-stack-insp/</a><br>
<br>-Edward Kmett<br></div></div>