@@ -1,7 +1,7 @@
1−import Control.Applicative ((<|>))
1+import Control.Applicative ((<|>), many)
2import Control.Monad (forM_)
2import Control.Monad (forM_)
3import System.Environment (getArgs)
3import System.Environment (getArgs)
4−import qualified Data.Attoparsec.Char8 as A
4+import qualified Data.Attoparsec.ByteString.Char8 as A
5import qualified Data.ByteString.Char8 as B
5import qualified Data.ByteString.Char8 as B
6import qualified Text.Parsec as P
6import qualified Text.Parsec as P
7import qualified Text.Parsec.ByteString as P
7import qualified Text.Parsec.ByteString as P
@@ -14,8 +14,8 @@ attoparsec = do
14 A.Done _ xs -> print (length xs)
14 A.Done _ xs -> print (length xs)
15 what -> print what
15 what -> print what
17− slow = A.many (A.many1 A.letter_ascii <|> A.many1 A.digit)
17+ slow = many (A.many1 A.letter_ascii <|> A.many1 A.digit)
18− fast = A.many (A.takeWhile1 isLetter <|> A.takeWhile1 isDigit)
18+ fast = many (A.takeWhile1 isLetter <|> A.takeWhile1 isDigit)
19 isDigit c = c >= '0' && c <= '9'
19 isDigit c = c >= '0' && c <= '9'
20 isLetter c = (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')
20 isLetter c = (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')