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

R5RS meeting at Xerox PARC



   Date: Fri, 8 May 92 12:49:20 PDT
   From: rpg%inferno@lucid.com (Richard P. Gabriel)

   This proposal (?) seems to want to hide the details of the file system
   implementation, but it goes awry here and there. Presumably the idea
   is that you either deal with strings to name files, directories, and
   the like, or else you deal with vicinities. So far, so good. But
   SCHEME-FILE-SUFFIX appears to reveal the fact that most (all?) systems
   use suffixies or extensions to assign types (as used by language
   processors) to files.

SCHEME-FILE-SUFFIX was not part of the original vicinity system.  I
added it when Brian Hanson of Control Data Corporation
(brh@ahse.cdc.com) pointed out that "." is the directory separator
character on NOS/VE systems.

   Why go out of your way to reveal implementation details?

Other than making a poor choice of name, I don't think I have.  My
intent is that SCHEME-FILE-SUFFIX not be optional depending on whether
the system uses a file suffix; but that it be optional depending on
the use of the file.  It should be used in all cases where a Scheme
file is being accessed.  It should not be used in cases where a
non-Scheme file (like a copyright notice) is being accessed.  Systems
which do not have file suffixes should just have (SCHEME-FILE-SUFFIX)
return "".

   It would seem to me better for SCHEME-FILE-SUFFIX to be
   renamed SCHEME-FILE-TYPE-CONSTRUCTOR, and have it return a procedure
   which, when given a filename, returns a filename with the same `base
   name' but with type SCHEME. Then IN-VICINITY should take this optional
   procedure.

     (in-vicinity <vicinity> <filename>)			procedure
     (in-vicinity <vicinity> <filename> <type-constructor>)procedure

   or, better yet, eliminate the extra argument and let people write:

     (in-vicinity <vicinity> ((scheme-file-type-constructor) <filename>))

I would prefer if vicinity functions dealing with static paths (those
known at compile time like library-vicinity, implementation-vicinity,
and program-vicinity) were allowed (but not required) to be syntax so
that compilers could reliably integrate these calls.  This is the case
with the #include <???.h> and #include "???.h" syntax in C.  A version
of your idea above which would allow this is:

  (in-vicinity <vicinity> (scheme-file <filename>))

If it is the case that LOAD in all Scheme systems automatically checks
for the scheme file extension then SCHEME-FILE-SUFFIX would be
unneccessary.  Is this the case?  I think this would be a much better
solution because it would allow LOAD to similarly load compiled
versions if they exist.  Is this a possibility for R5RS?