remaining issue: Windows-disallowed file names
Derick Eddington
(06 Mar 2010 01:11 UTC)
|
Re: remaining issue: Windows-disallowed file names
R. Kent Dybvig
(07 Mar 2010 06:50 UTC)
|
Re: remaining issue: Windows-disallowed file names
Derick Eddington
(08 Mar 2010 02:04 UTC)
|
Re: remaining issue: Windows-disallowed file names
Derick Eddington
(08 Mar 2010 02:26 UTC)
|
Re: remaining issue: Windows-disallowed file names
R. Kent Dybvig
(08 Mar 2010 18:42 UTC)
|
Re: remaining issue: Windows-disallowed file names
Derick Eddington
(09 Mar 2010 08:53 UTC)
|
Re: remaining issue: Windows-disallowed file names R. Kent Dybvig (14 Mar 2010 04:12 UTC)
|
Re: remaining issues
Derick Eddington
(14 Mar 2010 19:21 UTC)
|
Re: remaining issues
R. Kent Dybvig
(15 Mar 2010 14:08 UTC)
|
Re: remaining issues
Derick Eddington
(15 Mar 2010 23:44 UTC)
|
Re: remaining issues
R. Kent Dybvig
(22 Mar 2010 21:28 UTC)
|
Re: remaining issues
Derick Eddington
(27 Mar 2010 02:30 UTC)
|
> In conclusion, I don't see why considering library names as > representations of contemporary file names is proper, and I don't see > why it outweighs the importance of abstract unrestricted library names. All of what you say follows from your perspective but is uncompelling to me from my perspective. So perhaps we just have to agree to disagree. But in your second-to-last paragraph: > If you want to override the SRFI to catch such library names, you can > also map them to a file name without the SRFI's encoding (maybe just the > "absolute path" first symbol). Same for ~. lies a possible compromise I might be able to justify implementing: require a system to look first for the unencoded version of the constructed pathname (ignoring search-path prefixes if the pathname is absolute in the host filesystem) and, if that fails, then for the encoded version. For example, say the list of library directories includes "lib1" and "lib2" and the list of library extensions includes only "sls". Then the system looks for (/ foo) first in /foo.sls, then in lib1/%2f%/foo.sls, then in lib2/%2f%/foo.sls. It looks for (srfi :1) first in lib1/srfi/:1.sls, then in lib2/srfi/:1.sls, then in lib1/srfi/%3a%1.sls, then in lib2/srfi/%3a%1.sls. This should allow one to name any file that exists in the filesystem and to specify absolute pathnames for convenience or security, without inhibiting the sharing of filenames with funny characters via the %scalar-value% encoding. Obviously, a system could choose not to bother trying the unencoded version of the path name if it is clearly not valid for the underlying filesystem. Incidentally, is there a reason to chose "r6rs-lib" as the extension for R6RS libraries rather than the shorter "sls" as recommended in the R6RS non-normative appendices? We selected sls because it did not (to our knowledge) conflict with existing extensions for Scheme source code, so I assume that's not your reason. If there is no particular reason why you chose r6rs-lib, please change it to sls. Also, Chez Scheme treats a trailing separator character (":" under Unix-based systems, ";" under Windows) in its variants of SCHEME_LIB_PATH and SCHEME_LIB_EXTENSIONS as an indication that the system should look in the system-specific libraries/extensions if the library isn't found in the user-specified set. (This mirrors similar behavior for the LD_LIBRARY_PATH variable used by some Unix dynamic loaders.) Perhaps SRFI 103 should do the same. For example, if SCHEME_LIB_PATH is set to "foo:bar" on a Unix-based system, the system should look in foo and bar only, but if SCHEME_LIB_PATH is set to "foo:bar:", the system should look in foo, bar, and any system-specific library directories. It is useful to prevent the system from looking in system-specific libraries if you want to make sure you know exactly where each library is coming from, and it is useful for user directories to be searched first if you have a library you want used in preference to one shipped with the implementation. Kent