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