
On Thu, Oct 28, 2004 at 01:43:19AM +0100, Glynn Clements wrote:
Andrew Pimlott wrote:
splitFileName "." == (".", ".")
This again runs contrary to my intuition: I expect to get back the parent, and the name of the file relative to the parent.
I don't see what other result is possible in this case.
Well, that's what I meant to imply by "consistent with the type". If the type were FilePath -> Maybe (String, String) you could return Nothing. Or FilePath -> (Maybe String, Maybe String). To me, that's better than doing something odd, and makes the user aware of the special cases.
All these weird cases make the library hard to use without reading the code, going by trial and error, or reading the documentation (assuming it is scrupulously complete) _very_ carefully. (Which, as I complained in the old message I cited, also the case with every other path API I've used.)
It will probably be the case with every path API which you will ever use. There are many difficult problems here.
Well, it's messy, but I don't believe it's that hard. Of course, you'll never be correct outside the IO monad, but if you enumerate your assumptions about what a path means outside of IO, I think you can come up with a fairly coherent set of operations. Andrew