Skip to content

Instantly share code, notes, and snippets.

@kseo
Last active December 31, 2015 19:09
Show Gist options
  • Select an option

  • Save kseo/8031971 to your computer and use it in GitHub Desktop.

Select an option

Save kseo/8031971 to your computer and use it in GitHub Desktop.
wc written in Haskell using enumerator
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