@@ -1,11 +1,19 @@
1import System.Environment
1import System.Environment
2−import qualified Data.ByteString as B
2+import qualified Data.ByteString.Char8 as B
3−import qualified Data.ByteString.Lazy as BL
3+import qualified Data.ByteString.Lazy.Char8 as BL
4import qualified Data.Text as T
4import qualified Data.Text as T
5import qualified Data.Text.Encoding as T
5import qualified Data.Text.Encoding as T
6import qualified Data.Text.Lazy as TL
6import qualified Data.Text.Lazy as TL
7import qualified Data.Text.Lazy.Encoding as TL
7import qualified Data.Text.Lazy.Encoding as TL
9+bytestring haystack = do
10+ ls <- B.lines `fmap` B.readFile haystack
11+ print . sum . map (\needle -> length . filter (==needle) $ ls) $ take 100 ls
13+lazyBytestring haystack = do
14+ ls <- BL.lines `fmap` BL.readFile haystack
15+ print . sum . map (\needle -> length . filter (==needle) $ ls) $ take 100 ls
9text haystack = do
17text haystack = do
10 ls <- (T.lines . T.decodeUtf8) `fmap` B.readFile haystack
18 ls <- (T.lines . T.decodeUtf8) `fmap` B.readFile haystack
11 print . sum . map (\needle -> length . filter (==needle) $ ls) $ take 100 ls
19 print . sum . map (\needle -> length . filter (==needle) $ ls) $ take 100 ls
@@ -21,6 +29,8 @@ string haystack = do
22 args <- getArgs
30 args <- getArgs
23 case args of
31 case args of
32+ ["bs",h] -> bytestring h
33+ ["lazybs",h] -> lazyBytestring h
24 ["text",h] -> text h
34 ["text",h] -> text h
25 ["lazytext",h] -> lazyText h
35 ["lazytext",h] -> lazyText h
26 ["string",h] -> string h
36 ["string",h] -> string h