readTree :: FilePath -> IO (Tree FilePath FilePath)
readTree p = liftM (Node p) $ listDirectory p >>= mapM readChild
  where
    readChild c = ifM (isDirectory c) (readTree c) (return $ Leaf c c)    

--        file       temp
readTree :: FilePath -> IO (Tree FilePath FilePath)
readTree p = liftM (Node p) $ listDirectory p >>= mapM readChild
  where
    readChild c = ifM (isDirectory c) (readTree c) (return $ Leaf c c)    

--        file       temp
readTree p = liftM (Node p) $ listDirectory p >>= mapM readChild
  where
    readChild c = ifM (isDirectory c) (readTree c) (return $ Leaf c c)    

--        file       temp