[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Date: Sun, 8 Feb 1998 15:53:06 -0500 (EST)
From: Aubrey Jaffer <email@example.com>
I believe the enclosed code implements R5RS' two-argument EVAL for
SLIB-supporting Schemes in terms of one-argument EVAL here named
slib:eval (which can be defined using LOAD).
The environment returned by (INTERACTION-ENVIRONMENT) is mutable.
When EVAL is called with the interaction environment, it restores the
environment stack (EVAL::SAVED-ENVIRONMENTS), evaluates the
expression, and then rebinds the environments in their original order,
capturing top-level binding changes at each step.
I don't think this code works correctly. Consider the following:
(let ((f (eval '(lambda (x) (+ x 1))
(set! + -)
This should return 1 but I believe that in your implementation
it would return -1.
- From: Aubrey Jaffer <firstname.lastname@example.org>