[Haskell-beginners] Doing IO in terms of Arrow

Haisheng Wu freizl at gmail.com
Mon Jun 27 09:53:34 CEST 2011


Hello,
  I'm wondering if it is possible doing IO in terms of Arrow.
  I got a function search all files under directory recursively and I'd like
to refartoring using Arrow terms.

  I tried to define a function like below but failed.
  isDirExist = Kleisli doesDirectoryExist

  Do I need to define a instance for IO to be Arrow? Or is there any
existing solutions?
  I'm a newbie of Haskell and thanks your help.

  ~~~~~
  getFilesInDir :: FilePath -> IO [FilePath]
  getFilesInDir inp = do
      isDir <- doesDirectoryExist inp
      files <- if isDir then
                   (do
                      names <- getDirectoryContents inp
                      forM [ inp </> x | x <- names, isNotSpecialDir x ]
getFilesInDir)
                   else return [[inp]]
      return $ concat files
  ~~~~~
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20110627/3fd02a31/attachment.htm>


More information about the Beginners mailing list