[Haskell-cafe] How to determine if a FilePath is a directory name or regular file?

Duncan Coutts duncan.coutts at worc.ox.ac.uk
Mon Jun 22 07:37:58 EDT 2009


On Mon, 2009-06-22 at 08:53 +0200, Deniz Dogan wrote:
> 2009/6/22 Colin Paul Adams <colin at colina.demon.co.uk>:
> >>>>>> "Judah" == Judah Jacobson <judah.jacobson at gmail.com> writes:
> >
> >    Judah> On Sun, Jun 21, 2009 at 11:12 PM, Colin Paul
> >    Judah> Adams<colin at colina.demon.co.uk> wrote:
> >    >> I've been hoogling like bad to try to determine if a function
> >    >> like this exists.
> >    >>
> >    >> getDirectoryContents returns sub-directories as well as file
> >    >> names. I want only the latter, so I'm looking for a suitable
> >    >> filter.
> >
> >    Judah> Use System.Directory.doesDirectoryExist/doesFileExist.
> >
> > Thanks.
> >
> > it seems it's time i went to the optician again.
> 
> I'm not surprised that anyone would make the mistake. I think that the
> two functions should be named "isDirectory" and "isFile", but it seems
> that "isDirectory" was already taken by another function in
> System.Directory, which is quite unfortunate. "does" goes against the
> intuition one gets from pretty much everything else in Haskell, where
> "is" seems to be the convention. In fact, Hoogle only knows about
> three functions which start with "does".

One explanation is that isBlah asks "is this thing a blah", but we're
not asking that because there is an indirection via the filepath. We're
asking "does this filepath refer to a directory" not "is this filename a
directory". The latter could be a function:

isDirectory :: FileInfo -> Bool

along with a hypothetical

getFileInfo :: FilePath -> IO FileInfo

Duncan



More information about the Haskell-Cafe mailing list