Last active
December 31, 2015 19:09
-
-
Save kseo/8031971 to your computer and use it in GitHub Desktop.
wc written in Haskell using enumerator
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import qualified Data.ByteString as BS | |
| import qualified Data.ByteString.Internal as BS (c2w, w2c) | |
| import Data.Enumerator hiding (head) | |
| import qualified Data.Enumerator.Binary as EB | |
| import qualified Data.Enumerator.List as EL | |
| import System.Environment | |
| countLines :: Iteratee BS.ByteString IO Int | |
| countLines = do | |
| bs <- EL.head | |
| case bs of | |
| Nothing -> return 0 | |
| Just string -> do | |
| numLines <- countLines | |
| return $ (BS.count (BS.c2w '\n') string) + numLines | |
| main = do | |
| args <- getArgs | |
| let filename = head args | |
| numLines <- run_ (EB.enumFile filename $$ countLines) | |
| print numLines |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment