summaryrefslogtreecommitdiff
path: root/src/File.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/File.hs')
-rw-r--r--src/File.hs31
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)
+