My unit testing system is based on running eval to evaluate tests. The old larceny eval has the default behavior of inheriting the interaction environment, which is what I need. For example:
[EMAIL PROTECTED] ~/wavescript/src] $ larceny Larceny v0.96 "Fluoridation" (Dec 23 2007 08:04:15, precise:Linux:unified) larceny.heap, built on Sun Dec 23 08:15:16 EST 2007 > (eval 'x) Error: Undefined global variable "x". Entering debugger; type "?" for help. debug> #<EOF> > (define x 99) > (eval 'x) 99 > ---------------------------------------------------------------- However, under ERR5RS, no such luck: [EMAIL PROTECTED] ~/wavescript/src] $ larceny -err5rs Larceny v0.96 "Fluoridation" (Dec 23 2007 08:04:15, precise:Linux:unified) larceny.heap, built on Sun Dec 23 08:15:16 EST 2007 ERR5RS mode (no libraries have been imported) > (import (rnrs base) (primitives eval)) > (eval 'x) Error: Undefined global variable "x". Entering debugger; type "?" for help. debug> #<EOF> > (define x 99) > (eval 'x) Error: Undefined global variable "x". Entering debugger; type "?" for help. debug> #<EOF> ----------------------------------------------------------------- Now, this is probably the intended behavior. The R6RS eval requires an explicit environment for evaluation. But I thought by doing import (primitives ...) I was getting access to the old larceny eval, with the "dirty" behavior that it inherits the top-level environment. By the way, I feel that the R6RS eval would be much easier to satisfy if the language had (all-from ...) as an export spec. That is, if I could easily *aggregrate* libraries together, then I would be happier coming up with an environment to satisfy every call to eval. -Ryan _______________________________________________ Larceny-users mailing list [email protected] https://lists.ccs.neu.edu/bin/listinfo/larceny-users
