[r6rs-discuss] Importing set! into a single phase

AndrevanTonder andre at het.brown.edu
Wed May 23 13:08:59 EDT 2007


On Wed, 23 May 2007, Abdulaziz Ghuloum wrote:

>
> On May 23, 2007, at 12:08 PM, AndrevanTonder wrote:
>
>> According to section 9.1, the base library exports set! for levels 0 and 1.
>> As a result, there does not seem to be any way that a client library can
>> import set! into a single level.
>
> Is it important in the explicitly-specified-"for"-import semantics that set!
> be exported for level 1?  I don't remember why this is needed.

Unfortunately yes, if one wants to check that the identifier-syntax
form is well-formed.  However, since there are always just two clauses in
the same order, the set! literal in

    (define-syntax p.car
      (identifier-syntax
       (_          (car p))
       ((set! _ e) (set-car! p e))))

is actually redundant.  A better approach might therefore be to remove it
from the syntax or to ignore it, in which case one would not need to export 
set! for level 1.

>> One way of addressing this would be for the base library to remain as
>> specified, but to provide an additional library separately that exports 
>> only
>> set! at level 0.
>
> Is restricting set! to a single phase so important as to warrant a separate
> library?

I don't know, but probably someone somewhere will want to do it some day.

Andre



More information about the r6rs-discuss mailing list