Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Short answer:</p> <p>The fundamental reading list for a lisp interpreter is SICP. I would not at all call it overkill, if you feel you are overqualified for the first parts of the book jump to chapter 4 and start interpreting away (although I feel this would be a loss since chapters 1-3 really are that good!).</p> <p>Add LISP in Small Pieces (LISP from now on), chapters 1-3. Especially chapter 3 if you need to implement any non-trivial control forms.</p> <p>See this post by Jens Axel Søgaard on a minimal self-hosting Scheme: <a href="http://www.scheme.dk/blog/2006/12/self-evaluating-evaluator.html" rel="noreferrer">http://www.scheme.dk/blog/2006/12/self-evaluating-evaluator.html</a> .</p> <p>A slightly longer answer:</p> <p>It is hard to give advice without knowing what you require from your interpreter.</p> <ul> <li>does it really really need to be an interpreter, or do you actually need to be able to execute lisp code?</li> <li>does it need to be fast?</li> <li>does it need standards compliance? Common Lips? R5RS? R6RS? Any SFRIs you need?</li> </ul> <p>If you need anything more fancy than a simple syntax tree walker I would strongly recommend embedding a fast scheme subsystem. Gambit scheme comes to mind: <a href="http://dynamo.iro.umontreal.ca/~gambit/wiki/index.php/Main_Page" rel="noreferrer">http://dynamo.iro.umontreal.ca/~gambit/wiki/index.php/Main_Page</a> .</p> <p>If that is not an option chapter 5 in SICP and chapters 5-- in LISP target compilation for faster execution.</p> <p>For faster interpretation I would take a look at the most recent JavaScript interpreters/compilers. There seem to be a lot of thought going into fast JavaScript execution, and you can probably learn from them. V8 cites two important papers: <a href="http://code.google.com/apis/v8/design.html" rel="noreferrer">http://code.google.com/apis/v8/design.html</a> and squirrelfish cites a couple: <a href="http://webkit.org/blog/189/announcing-squirrelfish/" rel="noreferrer">http://webkit.org/blog/189/announcing-squirrelfish/</a> .</p> <p>There is also the canonical scheme papers: <a href="http://library.readscheme.org/page1.html" rel="noreferrer">http://library.readscheme.org/page1.html</a> for the RABBIT compiler.</p> <p>If I engage in a bit of premature speculation, memory management might be the tough nut to crack. Nils M Holm has published a book "Scheme 9 from empty space" <a href="http://www.t3x.org/s9fes/" rel="noreferrer">http://www.t3x.org/s9fes/</a> which includes a simple stop-the-world mark and sweep garbage collector. Source included.</p> <p>John Rose (of newer JVM fame) has written a paper on integrating Scheme to C: <a href="http://library.readscheme.org/servlets/cite.ss?pattern=AcmDL-Ros-92" rel="noreferrer">http://library.readscheme.org/servlets/cite.ss?pattern=AcmDL-Ros-92</a> .</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload