behaviour change in getDirectoryContents in GHC 7.2?

Yitzchak Gale gale at
Tue Nov 8 00:39:40 CET 2011

Simon Marlow wrote:
>> It would probably be better to have an abstract FilePath type and to keep
>> the original bytes, decoding on demand.  But that is a big change to the API
>> and would break much more code.  One day we'll do this properly; for now we
>> have this, which I think is a pretty reasonble compromise.

John Millikin wrote:
> Please understand, I am not arguing against the existence of this
> encoding layer in general. It's a fine idea for a simplistic
> high-level filesystem interaction library. But it should be
> *optional*, not part of the compiler or "base.

The problem is that Haskell 98 specifies type FilePath = String.
In retrospect, we now know that this is too simplistic.
But that's what we have right now.

> As implemented in GHC 7.2, this encoding is a complex and untested
> behavior with no escape hatch.

Isn't System.Posix.IO the escape hatch?

Even though FilePath is still used there instead of
ByteString as it should be, this is the
low-level POSIX-specific library. So the old hack of
interpreting the lowest 8 bits as bytes makes
a lot more sense there.


More information about the Glasgow-haskell-users mailing list