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

Re: Questions, loose ends, misprints, etc.

This page is part of the web mail archives of SRFI 83 from before July 7th, 2015. The new archives for SRFI 83 contain all messages, not just those from before July 7th, 2015.



 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