[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Questions, loose ends, misprints, etc.



 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