Hi Mark, Mark H Weaver <m...@netris.org> skribis:
> The problem is that `eval' uses dynamic-wind to temporarily set > (current-module) during the dynamic extent of the expansion and > evaluation of its form. Excuse my ignorance, but where is this? :-) What I see doesn’t seem to correspond to this description: (('apply (f args)) (apply (eval f env) (eval args env))) > Can we fix this? > > Ideally, I think that `eval' should set (current-module) during > expansion, but _not_ during evaluation. Then it can be properly tail > recursive. However, some code out there might depend on the existing > behavior, so I guess we can't change this, at least not in 2.0. Bummer. Why? How does 1.8’s CEVAL behave? It would be good to have test cases written against 1.8 that illustrate the behavior of (current-module) in different contexts. Then we could see whether/how the same behavior can be achieved in 2.0. WDYT? Thanks, Ludo’.