
--- Andrew Pimlott
--- Andrew Pimlott
wrote: You don't seem to address the problem of volumes or drives (a:, c:). I don't think you can punt
On Tue, Oct 26, 2004 at 11:43:40AM -0700, Krasimir Angelov wrote: this.
The drives are handled implicitly. They are always part of directory name.
Well, for example you couldn't write a file picker with this API, because you can't ask for all the roots. Maybe that's enough, because pathInits can be used to find the root for a given file (the first element of pathInits being the root).
The pathInits isn't suitable in this case. It is useful in case if you want to create some file but you are not sure wheter all directories in the path are created. The pathInits returns a list of all directories that must must be created. Some examples: pathInits "c:" == [] pathInits "c:\\" == [] pathInits "c:\\dir1" == ["c:\\dir1\\"] pathInits "c:\\dir1\\dir2" == ["c:\\dir1\\", "c:\\dir1\\dir2"] In the above example c: and c:\ aren't included in the list because you can't create c:\ as directory. The getPathRoot function is more appropriate in your case. getPathRoot "c:\\dir" == "c:\\"
For example, what should splitFileName "/" (unix) or splitFileName "." be, and why? I can't think of any answers that are consistent with the type (FilePath -> (String, String)).
In the current implementation: splitFileName "/" == ("/", "") splitFileName "." == (".", ".") This is consistent in the sense of rules: "/" `joinFileName` "" == "/" "." `joinFileName` "." == "." i.e. the joinFileName is the reverse function of splitFileName. Cheers, Krasimir __________________________________ Do you Yahoo!? Y! Messenger - Communicate in real time. Download now. http://messenger.yahoo.com