@@ -0,0 +1,25 @@
1+{-# LANGUAGE BangPatterns #-}
2+
3+import System.Environment (getArgs)
4+import qualified Data.Text.Lazy.IO as T
5+import qualified Data.Text.Lazy as T
6+import qualified Data.Text.Lazy.Encoding as T
7+import qualified Data.ByteString.Lazy.Char8 as B
8+import qualified Data.ByteString.Char8 as BS
9+import qualified Data.ByteString.Lazy.Search as B
10+
11+text :: FilePath -> String -> IO ()
12+text file pat = T.readFile file >>= print . T.count (T.pack pat)
13+
14+textBS :: FilePath -> String -> IO ()
15+textBS file pat = B.readFile file >>= print . T.count (T.pack pat) . T.decodeUtf8
16+
17+bytestring :: FilePath -> String -> IO ()
18+bytestring file pat = B.readFile file >>= print . length . B.indices (BS.pack pat)
19+
20+main = do
21+ (name : file : pat : _) <- getArgs
22+ case name of
23+ "bs" -> bytestring file pat
24+ "text" -> text file pat
25+ "textBS" -> textBS file pat