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

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.



Here are a few questions and possible loose ends that occurred to me 
while reading the document.  Some of these may of course only reflect 
a lack of understanding on my part:

- Can I shadow CAR from the R6RS language, either with an import 
  or a local definition?  This kind of thing is potentially useful.  
  However, the document says: "No identifier can be imported multiple 
  times...", which seems to preclude this, unless the "language" is 
  conceptually not an import?  
  
- Is "scheme://r6rs" also a library?  Specifically, can I say
  
    (import (add-prefix "scheme://r6rs" r6rs:)) 
    
- Related to previous: Does the language specification act semantically
  like an import?  It might be helpful to explain the difference, if any.  
  In particular, is "scheme://r6rs" also visited/invoked, and what do
  these mean, if anything, for the R6RS dynamic environment? 
  
- Can I import different bindings for the same identifier into different 
  phases?  I'm not sure if the document forbids this.  In fact, it
  explicitly allows the /same/ binding to be imported into different
  phases (which is also conceptually a "multiple" import).  
  I know MzScheme allows this, and it is also potentially 
  quite useful.  
  
- Is the "language" imported into all reflective levels (no matter
  how deep LET-SYNTAX is nested)?

- Would it be possible to provide a rationale for the notion of 
  indirect exports.  The thing is, I know of at least two module
  systems that do well without this notion.  I kind of see why it 
  is in there, but at the same time it kind of seems to conflict 
  (at least a little bit) with the notion of lexical scoping. 
  
- The IMPORT DSL makes me uncomfortable, since the directives do
  not seem to compose.  For example, it would be nice to compose ONLY
  and ADD-PREFIX.  
  
  However, this objection might be unfounded.  In fact, I think there is
  a misprint in the document.  Shouldn't <X-set> be <import-set> in 
  this snippet?
  
  <import-set> = <lib-path>
               | (only <X-set> <identifier>*)
               | (except <X-set> <identifier>*)
               | (add-prefix <X-set> <identifier>)
               | (rename <X-set> (<identifier> <identifier>)*)
  
- It would be more general, and would simplify the IMPORT DSL, if one could 
  specify arbitrary computations on imported identifiers.  Something like
  
          (import "scheme" (lambda (symbol)
                               (case symbol
                                 ((car) 'scheme:car)
                                 ((cdr) 'scheme:cdr)
                                 (else #f))))
                             
  from http://www.het.brown.edu/people/andre/macros/srfi-module.htm. 
  
  However, you may have other reasons for preferring a syntactic DSL.
  
- It would be nice if the toplevel could also be considered an implicit
  library.  But the no-shadowing and no-redefinition rule would
  seem to preclude this.  
  
- Can I export an unbound identifier?  For example, can I export
  literals (such as ELSE, UNQUOTE, etc.), or does this not even make
  sense.  
  
  Another potential application of this would be to make a module
  that "undefines" some bindings from "scheme://r6rs" to make a restricted
  language.  

Regards
Andre