@@ -35,14 +35,16 @@ wcl src = print =<< (S.length
35 $ FH.read src)
35 $ FH.read src)
38grepc :: String -> FH.Handle -> IO ()
39grepc :: String -> FH.Handle -> IO ()
39grepc pat src = print . (subtract 1) =<< (S.length
40grepc pat src = print . (subtract 1) =<< (S.length
40− $ FL.splitOn (A.fromList (map ord' pat)) FL.drain
41+ $ FL.splitOnSeq (A.fromList (map ord' pat)) FL.drain
41 $ FH.read src)
42 $ FH.read src)
43avgll :: FH.Handle -> IO ()
45avgll :: FH.Handle -> IO ()
44avgll src = print =<< (FL.foldl' avg
46avgll src = print =<< (FL.foldl' avg
45− $ FL.splitSuffixBy (== ord' '\n') FL.length
47+ $ FL.splitBySuffix (== ord' '\n') FL.length
46 $ FH.read src)
48 $ FH.read src)
47 where avg = (/) <$> toDouble FL.sum <*> toDouble FL.length
49 where avg = (/) <$> toDouble FL.sum <*> toDouble FL.length
48 toDouble = fmap (fromIntegral :: Int -> Double)
50 toDouble = fmap (fromIntegral :: Int -> Double)
@@ -50,7 +52,7 @@ avgll src = print =<< (FL.foldl' avg
50llhisto :: FH.Handle -> IO ()
52llhisto :: FH.Handle -> IO ()
51llhisto src = print =<< (FL.foldl' (FL.classify FL.length)
53llhisto src = print =<< (FL.foldl' (FL.classify FL.length)
52 $ S.map bucket
54 $ S.map bucket
53− $ FL.splitSuffixBy (== ord' '\n') FL.length
55+ $ FL.splitBySuffix (== ord' '\n') FL.length
54 $ FH.read src)
56 $ FH.read src)
56 bucket n = let i = n `div` 10 in if i > 9 then (9,n) else (i,n)
58 bucket n = let i = n `div` 10 in if i > 9 then (9,n) else (i,n)
@@ -63,7 +65,7 @@ main = do
64 rewind >> putStrLn "cat" >> cat src -- Unix cat program
66 rewind >> putStrLn "cat" >> cat src -- Unix cat program
65 rewind >> putStr "wcl " >> wcl src -- Unix wc -l program
67 rewind >> putStr "wcl " >> wcl src -- Unix wc -l program
66− rewind >> putStr "grepc " >> grepc "aaaa" src -- Unix grep -c program
68+ -- rewind >> putStr "grepc " >> grepc "aaaa" src -- Unix grep -c program
67 rewind >> putStr "avgll " >> avgll src -- get average line length
69 rewind >> putStr "avgll " >> avgll src -- get average line length
68 rewind >> putStr "llhisto " >> llhisto src -- get line length histogram
70 rewind >> putStr "llhisto " >> llhisto src -- get line length histogram