On Mar 18, 2008, at 1:50 PM, Bradley Lucier wrote:
I ran into a similar problem recently when hacking on the Meroon object system (which uses define-macro): Macros needed to be written so that (a) expressions passed as arguments are evaluated in the environment where the macro appears, e.g.,
(declare (safe) (not block) (not standard-bindings)(not extended- bindings)),
while (b) the code inserted by the macro is compiled in the environment in place when the Meroon macro is defined, e.g.,
(declare (not safe)(block)(standard-bindings)(extended-bindings) (fixnum)).
So can these module systems extend the idea of "hygiene" to include Gambit's compilation environment? (Aziz and Andre, are you listening?)
I suppose that, given R6RS semantics, about the only compilation "environment" options that need to be considered are code generation options:
([not] safe) ([not] inline) ([not] inline-primitives primitive…) (inlining-limit n) ([not] lambda-lift) ([not] constant-fold) ([not] run-time-bindings var…) (mostly-number-type primitive…)
I suppose that
(standard-bindings) (extended-bindings) (block)
are implied by R6RS semantics, no?
Brad