Namespace management & SRFI-0
Donovan Kolbly
(05 Jan 1999 19:40 UTC)
|
Re: Namespace management & SRFI-0 Dave Mason (05 Jan 1999 21:08 UTC)
|
Re: Namespace management & SRFI-0
Donovan Kolbly
(05 Jan 1999 21:25 UTC)
|
Re: Namespace management & SRFI-0
Marc Feeley
(06 Jan 1999 17:10 UTC)
|
Re: Namespace management & SRFI-0
Donovan Kolbly
(06 Jan 1999 17:48 UTC)
|
Re: Namespace management & SRFI-0
Marc Feeley
(06 Jan 1999 19:35 UTC)
|
Re: Namespace management & SRFI-0
Donovan Kolbly
(06 Jan 1999 19:53 UTC)
|
Re: Namespace management & SRFI-0
Marc Feeley
(12 Jan 1999 22:37 UTC)
|
Re: Namespace management & SRFI-0 Dave Mason 05 Jan 1999 21:07 UTC
>>>>> On Tue, 5 Jan 1999 13:40:02 -0600 (CST), Donovan Kolbly <xxxxxx@rscheme.org> said: > Is it permissible for an implementation to make available the > definitions implied by a SRFI only within the body of a > corresponding `if-implements'? Not as it's currently (intended to be) written. The problem as we envisioned it is that there may be alternative/conflicting SRFI's (and the editors will have a comment on some issues relating to this shortly). So a programmer wanting to provide a foo function might say something like: (if-implements SRFI-22 (define foo ....using.some.feature.from.SRFI-22...) (if-implements SRFI-17 (define foo ....using.some.feature.from.SRFI-17...) (define foo ....some.portable.way...))) Would this be possible with your proposed implementation? I assume the answer is yes, so it might resolve some of the other problems I have with SRFI-0 as it stands. More problematically, how would you implement this portably, in say, R5RS macros? Without your restriction, an implementation could (almost) do this with the code from SRFI-0: (define-syntax if-implements (syntax-rules (SRFI-1 SRFI-5) ((if-implements SRFI-1 yes) (begin ...all.the.code.from.SRFI-1... yes)) ((if-implements SRFI-1 yes no) (begin ...all.the.code.from.SRFI-1... yes)) ...) But with your restriction, the ...all.the.code... part needs to provide definitions in a scope that only includes the ``yes'' code, but defines in the ``yes'' code must be publicly visible. This may be problematic for other implementations. > My thinking is this: what I would like to do is map `if-implements' > to RScheme's `with-module'. ((with-module M B ...) provides access > within its body, B ..., to the exported definitions of the given > module M.) I am planning on providing most SRFI implementations in > the form of loadable modules with canonical names. This should > allow users to easily download new SRFI implementations, and > propertly manage the namespace even of conflicting SRFIs. I like these properties! ../Dave