Subject: Re: tail recursion
From: (Rob Warnock)
Date: 1998/12/19
Newsgroups: comp.lang.scheme
Message-ID: <75f591$>
William D Clinger  <> wrote:
| > BTW, are there any documents/books/sources on the implementation (and
| > compilation) of scheme?
| For the kinds of things that you are talking about, I think the best
| reference is Christian Queinnec's book "Lisp in Small Pieces"

*Absolutely!*  Tough going in places, but essential for anyone who might
be considering doing an implementation. Two areas I found especially
helpful were:

1. His discussion of the various "levels" or "worlds" [I forget exactly
   the term he used] of macro interpretation/expansion; and

2. A section on some nasty/subtle interactions between CALL/CC and EVAL,
   especially how the fact that a continuation can be captured during
   argument evaluation requires that arguments *must* be evaluated
   into temporary storage then *copied* to the new bindings for the
   arguments for the procedure being called (rather than immediately
   copied into the newly-bound locations as each argument is evaluated).
   [Unless you can prove through data/control flow analysis that
   no continuation can be captured during the argument evaluation.]


Rob Warnock, 8L-855
Applied Networking
Silicon Graphics, Inc.		Phone: 650-933-1673
2011 N. Shoreline Blvd.		FAX: 650-964-0811
Mountain View, CA  94043	PP-ASEL-IA