Hello. Let's take into account Env to load files in use function?
> diff -u FinalPolyML.sml_orig FinalPolyML.sml
--- FinalPolyML.sml_orig 2018-07-05 11:17:32.489398000 +0300
+++ FinalPolyML.sml 2018-07-05 11:20:20.012445000 +0300
@@ -674,6 +674,7 @@
end
val suffixes = ref ["", ".ML", ".sml"]
+ val paths = ref ["POLYML_LIB", "SMACKAGE_HOME", "SMACKAGE"]
(*****************************************************************************)
@@ -689,15 +690,20 @@
(* We use the functional layer and a reference here rather
than TextIO.input1 because
that requires locking round every read to make it
thread-safe. We know there's
only one thread accessing the stream so we don't need it here. *)
- fun trySuffixes [] =
+ fun trySuffixes name [] =
(* Not found - attempt to open the original and pass back the
exception. *)
(TextIO.getInstream(TextIO.openIn originalName), originalName)
- | trySuffixes (s::l) =
+ | trySuffixes name (s::l) =
(TextIO.getInstream(TextIO.openIn (originalName ^ s)),
originalName ^ s)
- handle IO.Io _ => trySuffixes l
+ handle IO.Io _ => trySuffixes name l
+
(* First in list is the name with no suffix. *)
- val (inStream, fileName) = trySuffixes("" :: ! suffixes)
+ fun tryPath name [] = trySuffixes name ("" :: ! suffixes)
+ | tryPath name (p::ps) = trySuffixes (p ^ name) ("" :: !
suffixes) handle IO.Io _ => tryPath name ps
+
+ val (inStream, fileName) = tryPath originalName (rev (foldl
(fn (p, r) => case OS.Process.getEnv p of NONE => r | SOME p => p ^
"/"::r) [""] (!paths)))
+
val stream = ref inStream
(* Record the file name. This allows nested calls to "use" to set the
correct path. *)
>