Questions, loose ends, misprints, etc. Andre van Tonder (01 Dec 2005 15:00 UTC)
|
Re: Questions, loose ends, misprints, etc.
Matthew Flatt
(01 Dec 2005 16:00 UTC)
|
Re: Questions, loose ends, misprints, etc.
Per Bothner
(01 Dec 2005 17:21 UTC)
|
Re: Questions, loose ends, misprints, etc.
Matthew Flatt
(01 Dec 2005 17:27 UTC)
|
Re: Questions, loose ends, misprints, etc.
Andre van Tonder
(03 Dec 2005 16:20 UTC)
|
Re: Questions, loose ends, misprints, etc.
Andre van Tonder
(03 Dec 2005 22:41 UTC)
|
Re: Questions, loose ends, misprints, etc.
Jens Axel Søgaard
(01 Dec 2005 16:49 UTC)
|
Re: Questions, loose ends, misprints, etc.
Matthew Flatt
(01 Dec 2005 16:58 UTC)
|
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