Re: program-vicinity Aubrey Jaffer 24 Jan 2005 02:58 UTC

 | Date: Sun, 09 Jan 2005 22:18:40 -1000 (HST)
 | From: Shiro Kawai <xxxxxx@lava.net>
 |
 | The return value of program-vicinity is currently undefined when
 | there's no file being loaded.  Is there any reason for that?

Which directory should be the value of program-vicinity be when no
file is being loaded?  If it is the directory containing the file
containing the call to program-vicinity, then every procedure which
contains a call to program-vicinity must carry a source-file
annotation.

Which directory should it be when the call to program-vicinity was
introduced by a macro?

Which directory should it be when called by a procedure defined using
eval or pasted into an interactive top-level?

 | Without a portable means of knowing if the file is being loaded or
 | not,

But there is a portable way: redefine LOAD to fluid-let a variable
(say *load-pathname*) or program-vicinity to return the vicinity
during its dynamic extent.  This was missing from reference
implementation; I will add it.

 | there's no way to guarantee a piece of Scheme code that's using
 | program-vicinity work (e.g. if the file is piped from stdin).  If
 | it returns #f, for example, then such a code can signal an error or
 | use some fallback value.
 |
 | (Another possibility is to allow an optional argument for
 | program-vicinity that is used as the fallback value.  However, it
 | might interfere with the implementation that might want to use
 | srfi-39 parameter to implement program-vicinity).