
Hi all, my program probably goes into infinite loop... But i cannot understand where and why. code: import System.Directory data MyFile = MyDir { dir_name :: String, dir_files :: [MyFile] } | MyFile { file_name :: String } read_dir_entries :: [FilePath] -> IO [MyFile] read_dir_entries [] = return [] read_dir_entries (name:names) = do isdir <- doesDirectoryExist name; entry <- if isdir then read_dir name else return (MyFile {file_name = name}); entries <- read_dir_entries names; return (entry:entries) read_dir :: FilePath -> IO MyFile read_dir name = do content <- getDirectoryContents name; files <- read_dir_entries content; return MyDir { dir_name = name, dir_files = files } instance Show MyFile where show (MyDir {dir_name = name, dir_files = files}) = "\n" ++ name ++ ":\n" ++ show files show (MyFile {file_name = name}) = "\t" ++ name ++ "\n" main = do cwd <- getCurrentDirectory; dir <- read_dir cwd; print dir;