Re: Questions, loose ends, misprints, etc.
Andre van Tonder 01 Dec 2005 17:55 UTC
Matthew Flatt wrote:
> Indirect exports ensure that that all access and mutations to
> unexported bindings are apparent within the module (afer macro
> expansion). Consequently, the programmer and the compiler can
> potentially prove that certain bindings are always used in a certain
> way, such as "this unexported function is never called with the wrong
> number of arguments". This potential is particularly important for
> optimizing compilers.
Per Bothner wrote:
> The compiler can prove that foo is never modified expect by
> using incr-foo.
...
> But foo is renamed - thanks to macro hygiene. Even though incr-foo
> expands to (set! foo ...) at the use-site, the name foo is not lexically
> visible, and is unrelated to any other name that "looks like" foo.
I see what you mean. However, I was referring to the issue that
even with syntax-rules macros, it is in general undecidable whether
they will expand to a mutation (set! foo .....) at the eventual
library use site.
Having said this, I am not sure how INDIRECT-EXPORT would help here.
It does not include a directive for specifying mutability, so
whether the binding is mutated is still undecidable.
The same goes for number of arguments, etc.
Regards
Andre