diff options
Diffstat (limited to 'src/File.hs')
-rw-r--r-- | src/File.hs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/File.hs b/src/File.hs new file mode 100644 index 0000000..e1245e8 --- /dev/null +++ b/src/File.hs @@ -0,0 +1,31 @@ +module File( + countLines + ) where + + + + +import qualified System.IO as IO + + + + +countLines :: FilePath -> IO Int +countLines f = do + h <- IO.openFile f IO.ReadMode + e <- IO.hIsEOF h + if e + then IO.hClose h >> return 0 + else countLinesTail h 0 + + + + +countLinesTail :: IO.Handle -> Int -> IO Int +countLinesTail h n = do + t <- IO.hGetLine h + e <- IO.hIsEOF h + if e + then IO.hClose h >> return (n + 1) + else countLinesTail h (n + 1) + |