
On Sun, Dec 09, 2007 at 09:17:56PM +0000, Neil Mitchell wrote:
The first is this: Prelude System.FilePath> "." > "foo" "./foo" which means we get things like [2 of 2] Compiling GHC.Foo ( ./GHC/Foo.hs, ./GHC/Foo.o ) rather than [2 of 2] Compiling GHC.Foo ( GHC/Foo.hs, GHC/Foo.o ) Is there a reason the result shouldn't be "foo"?
My best guess is that "." > "foo" should equal "./foo". However, I'm not overly wedded to this behaviour, so if the general consensus is the other way, I'll happily implement that.
Possibly relatedly, the current directory seems to be "" rather than ".". This turns up in at least a couple of areas: Prelude System.FilePath> normalise "." ""
I would say this is a bug, and that normalise "." should be ".".
The two answers above together mean that the property \x y -> let x' = normalise x y' = normalise y z = x' > y' in z == normalise z' doesn't hold (for x = ".", y = "foo"), but it is one I would expect to hold.
Prelude System.FilePath> splitFileName "foo" ("","foo")
I'd say this was expected. In a similar way, takeDirectory "foo" gives "", not "./".
I'd expect takeDirectory "foo" to be "." and dropFileName "foo" to be "./" too.
Finally, could splitSearchPath please take an extra argument, a list of FilePaths, to be appended to the result if it ends with a : or ; (as appropriate)?
Perhaps call it splitSearchPathIncluding?
Another name would be fine with me. I don't think "Including" is quite right, as it implies it always includes it. I can't think of a good name right now, though. Thanks Ian