File and directory names are values of type String, whose
precise meaning is operating system dependent. Files can be opened,
yielding a handle which can then be used to operate on the contents of
that file.
Equality of two FilePaths. If you call
System.Directory.canonicalizePath first this has a much
better chance of working. Note that this doesn't follow symlinks or
DOSNAM~1s.
x == y ==> equalFilePath x y
normalise x == normalise y ==> equalFilePath x y
Posix: equalFilePath "foo" "foo/"
Posix: not (equalFilePath "foo" "/foo")
Posix: not (equalFilePath "foo" "FOO")
Windows: equalFilePath "foo" "FOO"