David,
On Thu, 2015-10-15 at 15:18 +0100, David Matthews wrote:
I've committed a change to the NestedUse branch which is one possible solution to this. The version of "use" in there records the full path to the parent directory of the file name when a file is "used". If that file then contains a nested call to "use" the file is first checked as previously using the original working directory but if that fails it looks for the name by appending the parent directory to the name given. So in the example above, it would first look for "./first.ML" and only if that does not exist would it look for "/home/david/mydirectory/first.ML".
With this change, use "/home/david/mydirectory/ROOT.ML"; will work as intended *unless* there happens to be a file 'first.ML' in the current directory. In my view, this is a rather obscure error condition with great potential for accidental surprises.
The current implementation at least has a simple specification. Also, it is not at all uncommon to interpret paths relative to the current working directory; e.g., bash does the same.
What may be missing in SML is a way to determine the name and path of the file that is being 'used.'
Best, Tjark