Is it possible to write the equivalent of (import (rnrs) (rnrs eval)) (let ((env (environment <>))) (eval '(let ((foo <e1>)) <e2>) env) (eval '(let ((foo <e1>)) <e3>) env) (eval '(let ((foo <e1>)) <e4>) env))
in such a way that the expression for foo is evaluated only once? One way would be to define foo in a library and pass that library's name to environment. Is there a portable R6RS way to create such a library for use just in this let expression (i.e. on the fly)? I think the answer is no. Is there another way to share the definition of foo between the evaled expressions? On Sun, Jun 14, 2009 at 1:48 PM, Ramana Kumar<[email protected]> wrote: > One alternative method may be to put my custom exception handler in a > macro and try to catch the undefined variables during expansion... I > am presuming expansion happens at the same time bindings are > checked/determined, so I can get a handle on any exceptions in time... > > On Sun, Jun 14, 2009 at 12:21 PM, Ramana Kumar<[email protected]> wrote: >>> Maybe I don't understand the problem you're trying to solve and why you >>> need all the heavy-weight machinery that you're using. >> >> Yeah I wasn't clear that the issue here is handling undefined >> variables. If I didn't worry about skipping expressions with undefined >> variables, I could just (import (test-library)) at the top of the >> script and let evaluation take its normal course. At present I am not >> importing test-library into the testing script, rather I am using >> test-library as an argument to eval which is called in the testing >> script. >> >
