Variations on a Scheme--Lazy Evaluation

SICP > Metalinguistic Abstraction > Variations on a Scheme--Lazy Evaluation
Previous: Separating Syntactic Analysis from Execution Next: Normal Order and Applicative Order
    Normal Order and Applicative Order
    An Interpreter with Lazy Evaluation
    Streams as Lazy Lists

Now that we have an evaluator expressed as a Lisp program, we can experiment with alternative choices in language design simply by modifying the evaluator. Indeed, new languages are often invented by first writing an evaluator that embeds the new language within an existing high-level language. For example, if we wish to discuss some aspect of a proposed modification to Lisp with another member of the Lisp community, we can supply an evaluator that embodies the change. The recipient can then experiment with the new evaluator and send back comments as further modifications. Not only does the high-level implementation base make it easier to test and debug the evaluator; in addition, the embedding enables the designer to snarf[*] features from the underlying language, just as our embedded Lisp evaluator uses primitives and control structure from the underlying Lisp. Only later (if ever) need the designer go to the trouble of building a complete implementation in a low-level language or in hardware. In this section and the next we explore some variations on Scheme that provide significant additional expressive power.


Previous: Separating Syntactic Analysis from Execution Next: Normal Order and Applicative Order
    Normal Order and Applicative Order
    An Interpreter with Lazy Evaluation
    Streams as Lazy Lists

webmaster@arsdigita.org