signature OS_PATH structure Path : OS_PATH
An extension of the Standard ML Basis' OS.Path structure.
Imported implicitly.
signature OS_PATH = sig exception Path exception InvalidArc val parentArc : string val currentArc : string val fromString : string -> {isAbs : bool, vol : string, arcs : string list} val toString : {isAbs : bool, vol : string, arcs : string list} -> string val validVolume : {isAbs : bool, vol : string} -> bool val getVolume : string -> string val getParent : string -> string val concat : string * string -> string val splitDirFile : string -> {dir : string, file : string} val joinDirFile : {dir : string, file : string} -> string val dir : string -> string val file : string -> string val splitBaseExt : string -> {base : string, ext : string option} val joinBaseExt : {base : string, ext : string option} -> string val base : string -> string val ext : string -> string option val mkCanonical : string -> string val isCanonical : string -> bool val mkAbsolute : {path : string, relativeTo : string} -> string val mkRelative : {path : string, relativeTo : string} -> string val isAbsolute : string -> bool val isRelative : string -> bool val isRoot : string -> bool val fromUnixPath : string -> string val toUnixPath : string -> string end
Like the Standard ML Basis' OS.Path structure.
Note: Due to the platform independence of Alice the behaviour of OS.Path is not dependent on the host operating system. Instead, paths are always interpreted in a manner conforming to the conventions of Unix-style operating systems.
For the following function, semantics differs slightly from the official specification:
Does not raise Path if both arguments are relative paths on the same volume. Instead, resolution is performed as for absolut paths. Here are some examples:
path | relativeTo | mkRelative{path, relativeTo} |
---|---|---|
"a" | "" | "a" |
"a" | "." | "a" |
"a" | "a" | "." |
"a" | "c/d" | "../../a" |
"a" | "./a" | "." |
"a/" | "" | "a/" |
"a/b/c" | "a" | "b/c" |