[r6rs-discuss] Interpreters need not apply?

From: Aubrey Jaffer <agj>
Date: Wed Mar 7 12:02:39 2007

 | Date: Tue, 6 Mar 2007 14:10:33 -0500 (EST)
 | From: Andre van Tonder <andre_at_het.brown.edu>
 |
 | On Tue, 6 Mar 2007, Aubrey Jaffer wrote:
 |
 | > By requiring phased processing of libraries, R5.92RS has
 | > disenfranchised "pure interpreters", apparently for the sake of
 | > macros.
 |
 | This is not accurate. At least one of the reference
 | implementations of libraries and macros, at
 |
 | http://www.het.brown.edu/people/andre/macros/index.html
 |
 | runs as is in both the MzScheme and the Petite Chez interpreters'
 | REPLs, using only the ability of these implementations to interpret
 | vanilla r5rs code. It is straightforward to port (and prior
 | versions have been ported) to other vanilla r5rs Scheme systems.
 | All that is needed to completely integrate with these interpreters
 | is to plug a call to the above expander at the appropriate native
 | slot between the R and E of the REPL.

A pure interpreter like SCM interprets LET, LET*, LETREC, DO, COND,
CASE, and QUASIQUOTE directly; they are not rewritten in terms of
LAMBDA, IF, and BEGIN.

But your code rewrites these constructs in terms of LAMBDA, IF, and
BEGIN. So it is compiling R6RS to some subset of Scheme, which would
bypass the optimizations SCM has for the derived constructs and reduce
its speed.

I believe that SCM is unchallenged in its low latency, they delay
between loading a file and executing it. This is usually the most
important performance metric while developing software. Rewriting all
the source would certainly impact its latency.
Received on Wed Mar 07 2007 - 12:01:59 UTC

This archive was generated by hypermail 2.3.0 : Wed Oct 23 2024 - 09:15:01 UTC