[Haskell-cafe] Re: ANN: System.FilePath 0.9
Neil Mitchell
ndmitchell at gmail.com
Wed Jul 26 13:47:50 EDT 2006
Hi,
> Perhaps instead:
>
> directoryOf :: FilePath -> String
> filenameOf :: FilePath -> String
> extensionOf :: FilePath -> String
> basenaneOf :: FilePath -> String
>
> replaceFilename = joinFilePath . directoryOf
> replaceDirectory = flip joinFilePath . filenameOf
Trying to design a consistent naming system, it helps if we all agree
on what the various parts of a filepath are called, this is my draft
of that:
http://www-users.cs.york.ac.uk/~ndm/temp/filepath.png
With a better name for basename, if anyone can think of one.
Once we have that, how about
takeElement :: FilePath -> String
dropElement :: FilePath -> String
replaceElement :: FilePath -> String -> FilePath
addElement :: FilePath -> String -> FilePath
splitElement :: FilePath -> (String, String)
joinElement :: String -> String -> FilePath
With the restriction that not all of these are provided. Some don't
make sense (splitBaseName, dropBaseName), some are implemented via
combine (addFileName, joinFileName), some are redundant (addExtensions
== addExtension)
I'm also debating whether split/join should be exported, since they
are less likely to be used and can easily be written as a take/drop
pair. And of course, a bigger interface is harder to understand.
Opinions on this? It's easier to tweak a specification than the actual code :)
Thanks
Neil
More information about the Haskell-Cafe
mailing list