flatparse 0.5.2.1 → 0.5.3.0
raw patch · 14 files changed
+114/−86 lines, 14 filesdep +tasty-benchdep −gaugePVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: tasty-bench
Dependencies removed: gauge
API changes (from Hackage documentation)
- FlatParse.Basic: (<|>) :: ParserT st e a -> ParserT st e a -> ParserT st e a
+ FlatParse.Basic: (<|>) :: forall (st :: ZeroBitType) e a. ParserT st e a -> ParserT st e a -> ParserT st e a
- FlatParse.Basic: anyAsciiChar :: ParserT st e Char
+ FlatParse.Basic: anyAsciiChar :: forall (st :: ZeroBitType) e. ParserT st e Char
- FlatParse.Basic: anyAsciiDecimalInt :: ParserT st e Int
+ FlatParse.Basic: anyAsciiDecimalInt :: forall (st :: ZeroBitType) e. ParserT st e Int
- FlatParse.Basic: anyAsciiDecimalInteger :: ParserT st e Integer
+ FlatParse.Basic: anyAsciiDecimalInteger :: forall (st :: ZeroBitType) e. ParserT st e Integer
- FlatParse.Basic: anyAsciiDecimalWord :: ParserT st e Word
+ FlatParse.Basic: anyAsciiDecimalWord :: forall (st :: ZeroBitType) e. ParserT st e Word
- FlatParse.Basic: anyAsciiHexInt :: ParserT st e Int
+ FlatParse.Basic: anyAsciiHexInt :: forall (st :: ZeroBitType) e. ParserT st e Int
- FlatParse.Basic: anyAsciiHexWord :: ParserT st e Word
+ FlatParse.Basic: anyAsciiHexWord :: forall (st :: ZeroBitType) e. ParserT st e Word
- FlatParse.Basic: anyCString :: ParserT st e ByteString
+ FlatParse.Basic: anyCString :: forall (st :: ZeroBitType) e. ParserT st e ByteString
- FlatParse.Basic: anyCStringUnsafe :: ParserT st e ByteString
+ FlatParse.Basic: anyCStringUnsafe :: forall (st :: ZeroBitType) e. ParserT st e ByteString
- FlatParse.Basic: anyChar :: ParserT st e Char
+ FlatParse.Basic: anyChar :: forall (st :: ZeroBitType) e. ParserT st e Char
- FlatParse.Basic: anyVarintProtobuf :: ParserT st e Int
+ FlatParse.Basic: anyVarintProtobuf :: forall (st :: ZeroBitType) e. ParserT st e Int
- FlatParse.Basic: atSkip# :: Int# -> ParserT st e a -> ParserT st e a
+ FlatParse.Basic: atSkip# :: forall (st :: ZeroBitType) e a. Int# -> ParserT st e a -> ParserT st e a
- FlatParse.Basic: atSkipUnsafe# :: Int# -> ParserT st e r -> ParserT st e r
+ FlatParse.Basic: atSkipUnsafe# :: forall (st :: ZeroBitType) e r. Int# -> ParserT st e r -> ParserT st e r
- FlatParse.Basic: branch :: ParserT st e a -> ParserT st e b -> ParserT st e b -> ParserT st e b
+ FlatParse.Basic: branch :: forall (st :: ZeroBitType) e a b. ParserT st e a -> ParserT st e b -> ParserT st e b -> ParserT st e b
- FlatParse.Basic: byteString :: ByteString -> ParserT st e ()
+ FlatParse.Basic: byteString :: forall (st :: ZeroBitType) e. ByteString -> ParserT st e ()
- FlatParse.Basic: byteStringOf :: ParserT st e a -> ParserT st e ByteString
+ FlatParse.Basic: byteStringOf :: forall (st :: ZeroBitType) e a. ParserT st e a -> ParserT st e ByteString
- FlatParse.Basic: chainl :: (b -> a -> b) -> ParserT st e b -> ParserT st e a -> ParserT st e b
+ FlatParse.Basic: chainl :: forall b a (st :: ZeroBitType) e. (b -> a -> b) -> ParserT st e b -> ParserT st e a -> ParserT st e b
- FlatParse.Basic: chainr :: (a -> b -> b) -> ParserT st e a -> ParserT st e b -> ParserT st e b
+ FlatParse.Basic: chainr :: forall a b (st :: ZeroBitType) e. (a -> b -> b) -> ParserT st e a -> ParserT st e b -> ParserT st e b
- FlatParse.Basic: cut :: ParserT st e a -> e -> ParserT st e a
+ FlatParse.Basic: cut :: forall (st :: ZeroBitType) e a. ParserT st e a -> e -> ParserT st e a
- FlatParse.Basic: cutting :: ParserT st e a -> e -> (e -> e -> e) -> ParserT st e a
+ FlatParse.Basic: cutting :: forall (st :: ZeroBitType) e a. ParserT st e a -> e -> (e -> e -> e) -> ParserT st e a
- FlatParse.Basic: embedParser :: forall e a s. Parser e a -> ParserT s e a
+ FlatParse.Basic: embedParser :: forall e a (s :: ZeroBitType). Parser e a -> ParserT s e a
- FlatParse.Basic: embedParserST :: forall e a s. (forall s. ParserST s e a) -> ParserT s e a
+ FlatParse.Basic: embedParserST :: forall e a (s :: ZeroBitType). (forall s1. () => ParserST s1 e a) -> ParserT s e a
- FlatParse.Basic: ensure :: Int -> ParserT st e ()
+ FlatParse.Basic: ensure :: forall (st :: ZeroBitType) e. Int -> ParserT st e ()
- FlatParse.Basic: ensure# :: Int# -> ParserT st e ()
+ FlatParse.Basic: ensure# :: forall (st :: ZeroBitType) e. Int# -> ParserT st e ()
- FlatParse.Basic: eof :: ParserT st e ()
+ FlatParse.Basic: eof :: forall (st :: ZeroBitType) e. ParserT st e ()
- FlatParse.Basic: err :: e -> ParserT st e a
+ FlatParse.Basic: err :: forall e (st :: ZeroBitType) a. e -> ParserT st e a
- FlatParse.Basic: failed :: ParserT st e a
+ FlatParse.Basic: failed :: forall (st :: ZeroBitType) e a. ParserT st e a
- FlatParse.Basic: fails :: ParserT st e a -> ParserT st e ()
+ FlatParse.Basic: fails :: forall (st :: ZeroBitType) e a. ParserT st e a -> ParserT st e ()
- FlatParse.Basic: fusedSatisfy :: (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool) -> ParserT st e Char
+ FlatParse.Basic: fusedSatisfy :: forall (st :: ZeroBitType) e. (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool) -> ParserT st e Char
- FlatParse.Basic: getPos :: ParserT st e Pos
+ FlatParse.Basic: getPos :: forall (st :: ZeroBitType) e. ParserT st e Pos
- FlatParse.Basic: inSpan :: Span -> ParserT st e a -> ParserT st e a
+ FlatParse.Basic: inSpan :: forall (st :: ZeroBitType) e a. Span -> ParserT st e a -> ParserT st e a
- FlatParse.Basic: isolate :: Int -> ParserT st e a -> ParserT st e a
+ FlatParse.Basic: isolate :: forall (st :: ZeroBitType) e a. Int -> ParserT st e a -> ParserT st e a
- FlatParse.Basic: isolate# :: Int# -> ParserT st e a -> ParserT st e a
+ FlatParse.Basic: isolate# :: forall (st :: ZeroBitType) e a. Int# -> ParserT st e a -> ParserT st e a
- FlatParse.Basic: isolateToNextNull :: ParserT st e a -> ParserT st e a
+ FlatParse.Basic: isolateToNextNull :: forall (st :: ZeroBitType) e a. ParserT st e a -> ParserT st e a
- FlatParse.Basic: isolateUnsafe# :: Int# -> ParserT st e a -> ParserT st e a
+ FlatParse.Basic: isolateUnsafe# :: forall (st :: ZeroBitType) e a. Int# -> ParserT st e a -> ParserT st e a
- FlatParse.Basic: lookahead :: ParserT st e a -> ParserT st e a
+ FlatParse.Basic: lookahead :: forall (st :: ZeroBitType) e a. ParserT st e a -> ParserT st e a
- FlatParse.Basic: notFollowedBy :: ParserT st e a -> ParserT st e b -> ParserT st e a
+ FlatParse.Basic: notFollowedBy :: forall (st :: ZeroBitType) e a b. ParserT st e a -> ParserT st e b -> ParserT st e a
- FlatParse.Basic: optional :: ParserT st e a -> ParserT st e (Maybe a)
+ FlatParse.Basic: optional :: forall (st :: ZeroBitType) e a. ParserT st e a -> ParserT st e (Maybe a)
- FlatParse.Basic: optional_ :: ParserT st e a -> ParserT st e ()
+ FlatParse.Basic: optional_ :: forall (st :: ZeroBitType) e a. ParserT st e a -> ParserT st e ()
- FlatParse.Basic: pattern Err# :: (st :: ZeroBitType) -> e -> Res# st e a
+ FlatParse.Basic: pattern Err# :: st -> e -> Res# st e a
- FlatParse.Basic: pattern Fail# :: (st :: ZeroBitType) -> Res# st e a
+ FlatParse.Basic: pattern Fail# :: st -> Res# st e a
- FlatParse.Basic: pattern OK# :: (st :: ZeroBitType) -> a -> Addr# -> Res# st e a
+ FlatParse.Basic: pattern OK# :: st -> a -> Addr# -> Res# st e a
- FlatParse.Basic: satisfy :: (Char -> Bool) -> ParserT st e Char
+ FlatParse.Basic: satisfy :: forall (st :: ZeroBitType) e. (Char -> Bool) -> ParserT st e Char
- FlatParse.Basic: satisfyAscii :: (Char -> Bool) -> ParserT st e Char
+ FlatParse.Basic: satisfyAscii :: forall (st :: ZeroBitType) e. (Char -> Bool) -> ParserT st e Char
- FlatParse.Basic: setPos :: Pos -> ParserT st e ()
+ FlatParse.Basic: setPos :: forall (st :: ZeroBitType) e. Pos -> ParserT st e ()
- FlatParse.Basic: skip :: Int -> ParserT st e ()
+ FlatParse.Basic: skip :: forall (st :: ZeroBitType) e. Int -> ParserT st e ()
- FlatParse.Basic: skip# :: Int# -> ParserT st e ()
+ FlatParse.Basic: skip# :: forall (st :: ZeroBitType) e. Int# -> ParserT st e ()
- FlatParse.Basic: skipAnyAsciiChar :: ParserT st e ()
+ FlatParse.Basic: skipAnyAsciiChar :: forall (st :: ZeroBitType) e. ParserT st e ()
- FlatParse.Basic: skipAnyChar :: ParserT st e ()
+ FlatParse.Basic: skipAnyChar :: forall (st :: ZeroBitType) e. ParserT st e ()
- FlatParse.Basic: skipBack :: Int -> ParserT st e ()
+ FlatParse.Basic: skipBack :: forall (st :: ZeroBitType) e. Int -> ParserT st e ()
- FlatParse.Basic: skipBack# :: Int# -> ParserT st e ()
+ FlatParse.Basic: skipBack# :: forall (st :: ZeroBitType) e. Int# -> ParserT st e ()
- FlatParse.Basic: skipMany :: ParserT st e a -> ParserT st e ()
+ FlatParse.Basic: skipMany :: forall (st :: ZeroBitType) e a. ParserT st e a -> ParserT st e ()
- FlatParse.Basic: skipSatisfy :: (Char -> Bool) -> ParserT st e ()
+ FlatParse.Basic: skipSatisfy :: forall (st :: ZeroBitType) e. (Char -> Bool) -> ParserT st e ()
- FlatParse.Basic: skipSatisfyAscii :: (Char -> Bool) -> ParserT st e ()
+ FlatParse.Basic: skipSatisfyAscii :: forall (st :: ZeroBitType) e. (Char -> Bool) -> ParserT st e ()
- FlatParse.Basic: skipSome :: ParserT st e a -> ParserT st e ()
+ FlatParse.Basic: skipSome :: forall (st :: ZeroBitType) e a. ParserT st e a -> ParserT st e ()
- FlatParse.Basic: spanOf :: ParserT st e a -> ParserT st e Span
+ FlatParse.Basic: spanOf :: forall (st :: ZeroBitType) e a. ParserT st e a -> ParserT st e Span
- FlatParse.Basic: take :: Int -> ParserT st e ByteString
+ FlatParse.Basic: take :: forall (st :: ZeroBitType) e. Int -> ParserT st e ByteString
- FlatParse.Basic: take# :: Int# -> ParserT st e ByteString
+ FlatParse.Basic: take# :: forall (st :: ZeroBitType) e. Int# -> ParserT st e ByteString
- FlatParse.Basic: takeLine :: ParserT st e String
+ FlatParse.Basic: takeLine :: forall (st :: ZeroBitType) e. ParserT st e String
- FlatParse.Basic: takeRest :: ParserT st e ByteString
+ FlatParse.Basic: takeRest :: forall (st :: ZeroBitType) e. ParserT st e ByteString
- FlatParse.Basic: takeRestString :: ParserT st e String
+ FlatParse.Basic: takeRestString :: forall (st :: ZeroBitType) e. ParserT st e String
- FlatParse.Basic: takeUnsafe# :: Int# -> ParserT st e ByteString
+ FlatParse.Basic: takeUnsafe# :: forall (st :: ZeroBitType) e. Int# -> ParserT st e ByteString
- FlatParse.Basic: traceLine :: ParserT st e String
+ FlatParse.Basic: traceLine :: forall (st :: ZeroBitType) e. ParserT st e String
- FlatParse.Basic: traceRest :: ParserT st e String
+ FlatParse.Basic: traceRest :: forall (st :: ZeroBitType) e. ParserT st e String
- FlatParse.Basic: try :: ParserT st e a -> ParserT st e a
+ FlatParse.Basic: try :: forall (st :: ZeroBitType) e a. ParserT st e a -> ParserT st e a
- FlatParse.Basic: type ParserST s = ParserT (STMode s)
+ FlatParse.Basic: type ParserST s = ParserT STMode s
- FlatParse.Basic: unsafeLiftIO :: IO a -> ParserT st e a
+ FlatParse.Basic: unsafeLiftIO :: forall a (st :: ZeroBitType) e. IO a -> ParserT st e a
- FlatParse.Basic: unsafeSpanToByteString :: Span -> ParserT st e ByteString
+ FlatParse.Basic: unsafeSpanToByteString :: forall (st :: ZeroBitType) e. Span -> ParserT st e ByteString
- FlatParse.Basic: withAnyResult :: ParserT st t a -> (a -> ParserT st e b) -> ParserT st e b -> (t -> ParserT st e b) -> ParserT st e b
+ FlatParse.Basic: withAnyResult :: forall (st :: ZeroBitType) t a e b. ParserT st t a -> (a -> ParserT st e b) -> ParserT st e b -> (t -> ParserT st e b) -> ParserT st e b
- FlatParse.Basic: withByteString :: ParserT st e a -> (a -> ByteString -> ParserT st e b) -> ParserT st e b
+ FlatParse.Basic: withByteString :: forall (st :: ZeroBitType) e a b. ParserT st e a -> (a -> ByteString -> ParserT st e b) -> ParserT st e b
- FlatParse.Basic: withEnsure :: Int -> ParserT st e r -> ParserT st e r
+ FlatParse.Basic: withEnsure :: forall (st :: ZeroBitType) e r. Int -> ParserT st e r -> ParserT st e r
- FlatParse.Basic: withEnsure# :: Int# -> ParserT st e r -> ParserT st e r
+ FlatParse.Basic: withEnsure# :: forall (st :: ZeroBitType) e r. Int# -> ParserT st e r -> ParserT st e r
- FlatParse.Basic: withEnsure1 :: ParserT st e r -> ParserT st e r
+ FlatParse.Basic: withEnsure1 :: forall (st :: ZeroBitType) e r. ParserT st e r -> ParserT st e r
- FlatParse.Basic: withError :: ParserT st e b -> (e -> ParserT st e b) -> ParserT st e b
+ FlatParse.Basic: withError :: forall (st :: ZeroBitType) e b. ParserT st e b -> (e -> ParserT st e b) -> ParserT st e b
- FlatParse.Basic: withOption :: ParserT st e a -> (a -> ParserT st e r) -> ParserT st e r -> ParserT st e r
+ FlatParse.Basic: withOption :: forall (st :: ZeroBitType) e a r. ParserT st e a -> (a -> ParserT st e r) -> ParserT st e r -> ParserT st e r
- FlatParse.Basic: withSpan :: ParserT st e a -> (a -> Span -> ParserT st e b) -> ParserT st e b
+ FlatParse.Basic: withSpan :: forall (st :: ZeroBitType) e a b. ParserT st e a -> (a -> Span -> ParserT st e b) -> ParserT st e b
- FlatParse.Basic.Addr: atAddr# :: Addr# -> ParserT st e a -> ParserT st e a
+ FlatParse.Basic.Addr: atAddr# :: forall (st :: ZeroBitType) e a. Addr# -> ParserT st e a -> ParserT st e a
- FlatParse.Basic.Addr: lookaheadFromAddr# :: Addr# -> ParserT st e a -> ParserT st e a
+ FlatParse.Basic.Addr: lookaheadFromAddr# :: forall (st :: ZeroBitType) e a. Addr# -> ParserT st e a -> ParserT st e a
- FlatParse.Basic.Addr: takeOffAddr# :: Addr# -> Int# -> Int# -> ParserT st e ByteString
+ FlatParse.Basic.Addr: takeOffAddr# :: forall (st :: ZeroBitType) e. Addr# -> Int# -> Int# -> ParserT st e ByteString
- FlatParse.Basic.Addr: withAddr# :: (Addr# -> ParserT st e a) -> ParserT st e a
+ FlatParse.Basic.Addr: withAddr# :: forall (st :: ZeroBitType) e a. (Addr# -> ParserT st e a) -> ParserT st e a
- FlatParse.Basic.Addr: withOffAddr# :: Addr# -> Int# -> ParserT st e a -> ParserT st e a
+ FlatParse.Basic.Addr: withOffAddr# :: forall (st :: ZeroBitType) e a. Addr# -> Int# -> ParserT st e a -> ParserT st e a
- FlatParse.Basic.Base: atSkip# :: Int# -> ParserT st e a -> ParserT st e a
+ FlatParse.Basic.Base: atSkip# :: forall (st :: ZeroBitType) e a. Int# -> ParserT st e a -> ParserT st e a
- FlatParse.Basic.Base: atSkipUnsafe# :: Int# -> ParserT st e r -> ParserT st e r
+ FlatParse.Basic.Base: atSkipUnsafe# :: forall (st :: ZeroBitType) e r. Int# -> ParserT st e r -> ParserT st e r
- FlatParse.Basic.Base: branch :: ParserT st e a -> ParserT st e b -> ParserT st e b -> ParserT st e b
+ FlatParse.Basic.Base: branch :: forall (st :: ZeroBitType) e a b. ParserT st e a -> ParserT st e b -> ParserT st e b -> ParserT st e b
- FlatParse.Basic.Base: chainl :: (b -> a -> b) -> ParserT st e b -> ParserT st e a -> ParserT st e b
+ FlatParse.Basic.Base: chainl :: forall b a (st :: ZeroBitType) e. (b -> a -> b) -> ParserT st e b -> ParserT st e a -> ParserT st e b
- FlatParse.Basic.Base: chainr :: (a -> b -> b) -> ParserT st e a -> ParserT st e b -> ParserT st e b
+ FlatParse.Basic.Base: chainr :: forall a b (st :: ZeroBitType) e. (a -> b -> b) -> ParserT st e a -> ParserT st e b -> ParserT st e b
- FlatParse.Basic.Base: cut :: ParserT st e a -> e -> ParserT st e a
+ FlatParse.Basic.Base: cut :: forall (st :: ZeroBitType) e a. ParserT st e a -> e -> ParserT st e a
- FlatParse.Basic.Base: cutting :: ParserT st e a -> e -> (e -> e -> e) -> ParserT st e a
+ FlatParse.Basic.Base: cutting :: forall (st :: ZeroBitType) e a. ParserT st e a -> e -> (e -> e -> e) -> ParserT st e a
- FlatParse.Basic.Base: ensure :: Int -> ParserT st e ()
+ FlatParse.Basic.Base: ensure :: forall (st :: ZeroBitType) e. Int -> ParserT st e ()
- FlatParse.Basic.Base: ensure# :: Int# -> ParserT st e ()
+ FlatParse.Basic.Base: ensure# :: forall (st :: ZeroBitType) e. Int# -> ParserT st e ()
- FlatParse.Basic.Base: eof :: ParserT st e ()
+ FlatParse.Basic.Base: eof :: forall (st :: ZeroBitType) e. ParserT st e ()
- FlatParse.Basic.Base: err :: e -> ParserT st e a
+ FlatParse.Basic.Base: err :: forall e (st :: ZeroBitType) a. e -> ParserT st e a
- FlatParse.Basic.Base: failed :: ParserT st e a
+ FlatParse.Basic.Base: failed :: forall (st :: ZeroBitType) e a. ParserT st e a
- FlatParse.Basic.Base: fails :: ParserT st e a -> ParserT st e ()
+ FlatParse.Basic.Base: fails :: forall (st :: ZeroBitType) e a. ParserT st e a -> ParserT st e ()
- FlatParse.Basic.Base: isolate :: Int -> ParserT st e a -> ParserT st e a
+ FlatParse.Basic.Base: isolate :: forall (st :: ZeroBitType) e a. Int -> ParserT st e a -> ParserT st e a
- FlatParse.Basic.Base: isolate# :: Int# -> ParserT st e a -> ParserT st e a
+ FlatParse.Basic.Base: isolate# :: forall (st :: ZeroBitType) e a. Int# -> ParserT st e a -> ParserT st e a
- FlatParse.Basic.Base: isolateUnsafe# :: Int# -> ParserT st e a -> ParserT st e a
+ FlatParse.Basic.Base: isolateUnsafe# :: forall (st :: ZeroBitType) e a. Int# -> ParserT st e a -> ParserT st e a
- FlatParse.Basic.Base: lookahead :: ParserT st e a -> ParserT st e a
+ FlatParse.Basic.Base: lookahead :: forall (st :: ZeroBitType) e a. ParserT st e a -> ParserT st e a
- FlatParse.Basic.Base: notFollowedBy :: ParserT st e a -> ParserT st e b -> ParserT st e a
+ FlatParse.Basic.Base: notFollowedBy :: forall (st :: ZeroBitType) e a b. ParserT st e a -> ParserT st e b -> ParserT st e a
- FlatParse.Basic.Base: optional :: ParserT st e a -> ParserT st e (Maybe a)
+ FlatParse.Basic.Base: optional :: forall (st :: ZeroBitType) e a. ParserT st e a -> ParserT st e (Maybe a)
- FlatParse.Basic.Base: optional_ :: ParserT st e a -> ParserT st e ()
+ FlatParse.Basic.Base: optional_ :: forall (st :: ZeroBitType) e a. ParserT st e a -> ParserT st e ()
- FlatParse.Basic.Base: skip :: Int -> ParserT st e ()
+ FlatParse.Basic.Base: skip :: forall (st :: ZeroBitType) e. Int -> ParserT st e ()
- FlatParse.Basic.Base: skip# :: Int# -> ParserT st e ()
+ FlatParse.Basic.Base: skip# :: forall (st :: ZeroBitType) e. Int# -> ParserT st e ()
- FlatParse.Basic.Base: skipBack :: Int -> ParserT st e ()
+ FlatParse.Basic.Base: skipBack :: forall (st :: ZeroBitType) e. Int -> ParserT st e ()
- FlatParse.Basic.Base: skipBack# :: Int# -> ParserT st e ()
+ FlatParse.Basic.Base: skipBack# :: forall (st :: ZeroBitType) e. Int# -> ParserT st e ()
- FlatParse.Basic.Base: skipMany :: ParserT st e a -> ParserT st e ()
+ FlatParse.Basic.Base: skipMany :: forall (st :: ZeroBitType) e a. ParserT st e a -> ParserT st e ()
- FlatParse.Basic.Base: skipSome :: ParserT st e a -> ParserT st e ()
+ FlatParse.Basic.Base: skipSome :: forall (st :: ZeroBitType) e a. ParserT st e a -> ParserT st e ()
- FlatParse.Basic.Base: take :: Int -> ParserT st e ByteString
+ FlatParse.Basic.Base: take :: forall (st :: ZeroBitType) e. Int -> ParserT st e ByteString
- FlatParse.Basic.Base: take# :: Int# -> ParserT st e ByteString
+ FlatParse.Basic.Base: take# :: forall (st :: ZeroBitType) e. Int# -> ParserT st e ByteString
- FlatParse.Basic.Base: takeRest :: ParserT st e ByteString
+ FlatParse.Basic.Base: takeRest :: forall (st :: ZeroBitType) e. ParserT st e ByteString
- FlatParse.Basic.Base: takeUnsafe# :: Int# -> ParserT st e ByteString
+ FlatParse.Basic.Base: takeUnsafe# :: forall (st :: ZeroBitType) e. Int# -> ParserT st e ByteString
- FlatParse.Basic.Base: try :: ParserT st e a -> ParserT st e a
+ FlatParse.Basic.Base: try :: forall (st :: ZeroBitType) e a. ParserT st e a -> ParserT st e a
- FlatParse.Basic.Base: withAnyResult :: ParserT st t a -> (a -> ParserT st e b) -> ParserT st e b -> (t -> ParserT st e b) -> ParserT st e b
+ FlatParse.Basic.Base: withAnyResult :: forall (st :: ZeroBitType) t a e b. ParserT st t a -> (a -> ParserT st e b) -> ParserT st e b -> (t -> ParserT st e b) -> ParserT st e b
- FlatParse.Basic.Base: withEnsure :: Int -> ParserT st e r -> ParserT st e r
+ FlatParse.Basic.Base: withEnsure :: forall (st :: ZeroBitType) e r. Int -> ParserT st e r -> ParserT st e r
- FlatParse.Basic.Base: withEnsure# :: Int# -> ParserT st e r -> ParserT st e r
+ FlatParse.Basic.Base: withEnsure# :: forall (st :: ZeroBitType) e r. Int# -> ParserT st e r -> ParserT st e r
- FlatParse.Basic.Base: withEnsure1 :: ParserT st e r -> ParserT st e r
+ FlatParse.Basic.Base: withEnsure1 :: forall (st :: ZeroBitType) e r. ParserT st e r -> ParserT st e r
- FlatParse.Basic.Base: withError :: ParserT st e b -> (e -> ParserT st e b) -> ParserT st e b
+ FlatParse.Basic.Base: withError :: forall (st :: ZeroBitType) e b. ParserT st e b -> (e -> ParserT st e b) -> ParserT st e b
- FlatParse.Basic.Base: withOption :: ParserT st e a -> (a -> ParserT st e r) -> ParserT st e r -> ParserT st e r
+ FlatParse.Basic.Base: withOption :: forall (st :: ZeroBitType) e a r. ParserT st e a -> (a -> ParserT st e r) -> ParserT st e r -> ParserT st e r
- FlatParse.Basic.Integers: anyInt :: ParserT st e Int
+ FlatParse.Basic.Integers: anyInt :: forall (st :: ZeroBitType) e. ParserT st e Int
- FlatParse.Basic.Integers: anyInt16 :: ParserT st e Int16
+ FlatParse.Basic.Integers: anyInt16 :: forall (st :: ZeroBitType) e. ParserT st e Int16
- FlatParse.Basic.Integers: anyInt16be :: ParserT st e Int16
+ FlatParse.Basic.Integers: anyInt16be :: forall (st :: ZeroBitType) e. ParserT st e Int16
- FlatParse.Basic.Integers: anyInt16le :: ParserT st e Int16
+ FlatParse.Basic.Integers: anyInt16le :: forall (st :: ZeroBitType) e. ParserT st e Int16
- FlatParse.Basic.Integers: anyInt32 :: ParserT st e Int32
+ FlatParse.Basic.Integers: anyInt32 :: forall (st :: ZeroBitType) e. ParserT st e Int32
- FlatParse.Basic.Integers: anyInt32be :: ParserT st e Int32
+ FlatParse.Basic.Integers: anyInt32be :: forall (st :: ZeroBitType) e. ParserT st e Int32
- FlatParse.Basic.Integers: anyInt32le :: ParserT st e Int32
+ FlatParse.Basic.Integers: anyInt32le :: forall (st :: ZeroBitType) e. ParserT st e Int32
- FlatParse.Basic.Integers: anyInt64 :: ParserT st e Int64
+ FlatParse.Basic.Integers: anyInt64 :: forall (st :: ZeroBitType) e. ParserT st e Int64
- FlatParse.Basic.Integers: anyInt64be :: ParserT st e Int64
+ FlatParse.Basic.Integers: anyInt64be :: forall (st :: ZeroBitType) e. ParserT st e Int64
- FlatParse.Basic.Integers: anyInt64le :: ParserT st e Int64
+ FlatParse.Basic.Integers: anyInt64le :: forall (st :: ZeroBitType) e. ParserT st e Int64
- FlatParse.Basic.Integers: anyInt8 :: ParserT st e Int8
+ FlatParse.Basic.Integers: anyInt8 :: forall (st :: ZeroBitType) e. ParserT st e Int8
- FlatParse.Basic.Integers: anyWord :: ParserT st e Word
+ FlatParse.Basic.Integers: anyWord :: forall (st :: ZeroBitType) e. ParserT st e Word
- FlatParse.Basic.Integers: anyWord16 :: ParserT st e Word16
+ FlatParse.Basic.Integers: anyWord16 :: forall (st :: ZeroBitType) e. ParserT st e Word16
- FlatParse.Basic.Integers: anyWord16be :: ParserT st e Word16
+ FlatParse.Basic.Integers: anyWord16be :: forall (st :: ZeroBitType) e. ParserT st e Word16
- FlatParse.Basic.Integers: anyWord16le :: ParserT st e Word16
+ FlatParse.Basic.Integers: anyWord16le :: forall (st :: ZeroBitType) e. ParserT st e Word16
- FlatParse.Basic.Integers: anyWord32 :: ParserT st e Word32
+ FlatParse.Basic.Integers: anyWord32 :: forall (st :: ZeroBitType) e. ParserT st e Word32
- FlatParse.Basic.Integers: anyWord32be :: ParserT st e Word32
+ FlatParse.Basic.Integers: anyWord32be :: forall (st :: ZeroBitType) e. ParserT st e Word32
- FlatParse.Basic.Integers: anyWord32le :: ParserT st e Word32
+ FlatParse.Basic.Integers: anyWord32le :: forall (st :: ZeroBitType) e. ParserT st e Word32
- FlatParse.Basic.Integers: anyWord64 :: ParserT st e Word64
+ FlatParse.Basic.Integers: anyWord64 :: forall (st :: ZeroBitType) e. ParserT st e Word64
- FlatParse.Basic.Integers: anyWord64be :: ParserT st e Word64
+ FlatParse.Basic.Integers: anyWord64be :: forall (st :: ZeroBitType) e. ParserT st e Word64
- FlatParse.Basic.Integers: anyWord64le :: ParserT st e Word64
+ FlatParse.Basic.Integers: anyWord64le :: forall (st :: ZeroBitType) e. ParserT st e Word64
- FlatParse.Basic.Integers: anyWord8 :: ParserT st e Word8
+ FlatParse.Basic.Integers: anyWord8 :: forall (st :: ZeroBitType) e. ParserT st e Word8
- FlatParse.Basic.Integers: anyWord8Unsafe :: ParserT st e Word8
+ FlatParse.Basic.Integers: anyWord8Unsafe :: forall (st :: ZeroBitType) e. ParserT st e Word8
- FlatParse.Basic.Integers: sizedUnsafe# :: Eq a => Int# -> (Addr# -> Int# -> a) -> a -> ParserT st e ()
+ FlatParse.Basic.Integers: sizedUnsafe# :: forall a (st :: ZeroBitType) e. Eq a => Int# -> (Addr# -> Int# -> a) -> a -> ParserT st e ()
- FlatParse.Basic.Integers: withAnyInt :: (Int -> ParserT st e r) -> ParserT st e r
+ FlatParse.Basic.Integers: withAnyInt :: forall (st :: ZeroBitType) e r. (Int -> ParserT st e r) -> ParserT st e r
- FlatParse.Basic.Integers: withAnyInt16 :: (Int16 -> ParserT st e r) -> ParserT st e r
+ FlatParse.Basic.Integers: withAnyInt16 :: forall (st :: ZeroBitType) e r. (Int16 -> ParserT st e r) -> ParserT st e r
- FlatParse.Basic.Integers: withAnyInt32 :: (Int32 -> ParserT st e r) -> ParserT st e r
+ FlatParse.Basic.Integers: withAnyInt32 :: forall (st :: ZeroBitType) e r. (Int32 -> ParserT st e r) -> ParserT st e r
- FlatParse.Basic.Integers: withAnyInt64 :: (Int64 -> ParserT st e r) -> ParserT st e r
+ FlatParse.Basic.Integers: withAnyInt64 :: forall (st :: ZeroBitType) e r. (Int64 -> ParserT st e r) -> ParserT st e r
- FlatParse.Basic.Integers: withAnyInt8 :: (Int8 -> ParserT st e r) -> ParserT st e r
+ FlatParse.Basic.Integers: withAnyInt8 :: forall (st :: ZeroBitType) e r. (Int8 -> ParserT st e r) -> ParserT st e r
- FlatParse.Basic.Integers: withAnySized# :: Int# -> (Addr# -> Int# -> a) -> (a -> ParserT st e r) -> ParserT st e r
+ FlatParse.Basic.Integers: withAnySized# :: forall a (st :: ZeroBitType) e r. Int# -> (Addr# -> Int# -> a) -> (a -> ParserT st e r) -> ParserT st e r
- FlatParse.Basic.Integers: withAnySizedUnsafe# :: Int# -> (Addr# -> Int# -> a) -> (a -> ParserT st e r) -> ParserT st e r
+ FlatParse.Basic.Integers: withAnySizedUnsafe# :: forall a (st :: ZeroBitType) e r. Int# -> (Addr# -> Int# -> a) -> (a -> ParserT st e r) -> ParserT st e r
- FlatParse.Basic.Integers: withAnyWord :: (Word -> ParserT st e r) -> ParserT st e r
+ FlatParse.Basic.Integers: withAnyWord :: forall (st :: ZeroBitType) e r. (Word -> ParserT st e r) -> ParserT st e r
- FlatParse.Basic.Integers: withAnyWord16 :: (Word16 -> ParserT st e r) -> ParserT st e r
+ FlatParse.Basic.Integers: withAnyWord16 :: forall (st :: ZeroBitType) e r. (Word16 -> ParserT st e r) -> ParserT st e r
- FlatParse.Basic.Integers: withAnyWord32 :: (Word32 -> ParserT st e r) -> ParserT st e r
+ FlatParse.Basic.Integers: withAnyWord32 :: forall (st :: ZeroBitType) e r. (Word32 -> ParserT st e r) -> ParserT st e r
- FlatParse.Basic.Integers: withAnyWord64 :: (Word64 -> ParserT st e r) -> ParserT st e r
+ FlatParse.Basic.Integers: withAnyWord64 :: forall (st :: ZeroBitType) e r. (Word64 -> ParserT st e r) -> ParserT st e r
- FlatParse.Basic.Integers: withAnyWord8 :: (Word8 -> ParserT st e r) -> ParserT st e r
+ FlatParse.Basic.Integers: withAnyWord8 :: forall (st :: ZeroBitType) e r. (Word8 -> ParserT st e r) -> ParserT st e r
- FlatParse.Basic.Integers: word16Unsafe :: Word16 -> ParserT st e ()
+ FlatParse.Basic.Integers: word16Unsafe :: forall (st :: ZeroBitType) e. Word16 -> ParserT st e ()
- FlatParse.Basic.Integers: word32Unsafe :: Word32 -> ParserT st e ()
+ FlatParse.Basic.Integers: word32Unsafe :: forall (st :: ZeroBitType) e. Word32 -> ParserT st e ()
- FlatParse.Basic.Integers: word64Unsafe :: Word64 -> ParserT st e ()
+ FlatParse.Basic.Integers: word64Unsafe :: forall (st :: ZeroBitType) e. Word64 -> ParserT st e ()
- FlatParse.Basic.Integers: word8 :: Word8 -> ParserT st e ()
+ FlatParse.Basic.Integers: word8 :: forall (st :: ZeroBitType) e. Word8 -> ParserT st e ()
- FlatParse.Basic.Integers: word8Unsafe :: Word8 -> ParserT st e ()
+ FlatParse.Basic.Integers: word8Unsafe :: forall (st :: ZeroBitType) e. Word8 -> ParserT st e ()
- FlatParse.Basic.Parser: (<|>) :: ParserT st e a -> ParserT st e a -> ParserT st e a
+ FlatParse.Basic.Parser: (<|>) :: forall (st :: ZeroBitType) e a. ParserT st e a -> ParserT st e a -> ParserT st e a
- FlatParse.Basic.Parser: pattern Err# :: (st :: ZeroBitType) -> e -> Res# st e a
+ FlatParse.Basic.Parser: pattern Err# :: st -> e -> Res# st e a
- FlatParse.Basic.Parser: pattern Fail# :: (st :: ZeroBitType) -> Res# st e a
+ FlatParse.Basic.Parser: pattern Fail# :: st -> Res# st e a
- FlatParse.Basic.Parser: pattern OK# :: (st :: ZeroBitType) -> a -> Addr# -> Res# st e a
+ FlatParse.Basic.Parser: pattern OK# :: st -> a -> Addr# -> Res# st e a
- FlatParse.Basic.Parser: pureLazy :: a -> ParserT st e a
+ FlatParse.Basic.Parser: pureLazy :: forall a (st :: ZeroBitType) e. a -> ParserT st e a
- FlatParse.Basic.Parser: type ParserST s = ParserT (STMode s)
+ FlatParse.Basic.Parser: type ParserST s = ParserT STMode s
- FlatParse.Basic.Text: anyAsciiChar :: ParserT st e Char
+ FlatParse.Basic.Text: anyAsciiChar :: forall (st :: ZeroBitType) e. ParserT st e Char
- FlatParse.Basic.Text: anyAsciiDecimalInt :: ParserT st e Int
+ FlatParse.Basic.Text: anyAsciiDecimalInt :: forall (st :: ZeroBitType) e. ParserT st e Int
- FlatParse.Basic.Text: anyAsciiDecimalInteger :: ParserT st e Integer
+ FlatParse.Basic.Text: anyAsciiDecimalInteger :: forall (st :: ZeroBitType) e. ParserT st e Integer
- FlatParse.Basic.Text: anyAsciiDecimalWord :: ParserT st e Word
+ FlatParse.Basic.Text: anyAsciiDecimalWord :: forall (st :: ZeroBitType) e. ParserT st e Word
- FlatParse.Basic.Text: anyAsciiHexInt :: ParserT st e Int
+ FlatParse.Basic.Text: anyAsciiHexInt :: forall (st :: ZeroBitType) e. ParserT st e Int
- FlatParse.Basic.Text: anyAsciiHexWord :: ParserT st e Word
+ FlatParse.Basic.Text: anyAsciiHexWord :: forall (st :: ZeroBitType) e. ParserT st e Word
- FlatParse.Basic.Text: anyChar :: ParserT st e Char
+ FlatParse.Basic.Text: anyChar :: forall (st :: ZeroBitType) e. ParserT st e Char
- FlatParse.Basic.Text: fusedSatisfy :: (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool) -> ParserT st e Char
+ FlatParse.Basic.Text: fusedSatisfy :: forall (st :: ZeroBitType) e. (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool) -> ParserT st e Char
- FlatParse.Basic.Text: satisfy :: (Char -> Bool) -> ParserT st e Char
+ FlatParse.Basic.Text: satisfy :: forall (st :: ZeroBitType) e. (Char -> Bool) -> ParserT st e Char
- FlatParse.Basic.Text: satisfyAscii :: (Char -> Bool) -> ParserT st e Char
+ FlatParse.Basic.Text: satisfyAscii :: forall (st :: ZeroBitType) e. (Char -> Bool) -> ParserT st e Char
- FlatParse.Basic.Text: skipAnyAsciiChar :: ParserT st e ()
+ FlatParse.Basic.Text: skipAnyAsciiChar :: forall (st :: ZeroBitType) e. ParserT st e ()
- FlatParse.Basic.Text: skipAnyChar :: ParserT st e ()
+ FlatParse.Basic.Text: skipAnyChar :: forall (st :: ZeroBitType) e. ParserT st e ()
- FlatParse.Basic.Text: skipSatisfy :: (Char -> Bool) -> ParserT st e ()
+ FlatParse.Basic.Text: skipSatisfy :: forall (st :: ZeroBitType) e. (Char -> Bool) -> ParserT st e ()
- FlatParse.Basic.Text: skipSatisfyAscii :: (Char -> Bool) -> ParserT st e ()
+ FlatParse.Basic.Text: skipSatisfyAscii :: forall (st :: ZeroBitType) e. (Char -> Bool) -> ParserT st e ()
- FlatParse.Basic.Text: takeLine :: ParserT st e String
+ FlatParse.Basic.Text: takeLine :: forall (st :: ZeroBitType) e. ParserT st e String
- FlatParse.Basic.Text: takeRestString :: ParserT st e String
+ FlatParse.Basic.Text: takeRestString :: forall (st :: ZeroBitType) e. ParserT st e String
- FlatParse.Basic.Text: traceLine :: ParserT st e String
+ FlatParse.Basic.Text: traceLine :: forall (st :: ZeroBitType) e. ParserT st e String
- FlatParse.Basic.Text: traceRest :: ParserT st e String
+ FlatParse.Basic.Text: traceRest :: forall (st :: ZeroBitType) e. ParserT st e String
- FlatParse.Common.Assorted: packBytes :: [Word] -> Word
+ FlatParse.Common.Assorted: packBytes :: [Word64] -> Word64
- FlatParse.Common.Assorted: splitBytes :: [Word] -> ([Word], [Word])
+ FlatParse.Common.Assorted: splitBytes :: [Word64] -> ([Word64], [Word64])
- FlatParse.Stateful: (<|>) :: ParserT st r e a -> ParserT st r e a -> ParserT st r e a
+ FlatParse.Stateful: (<|>) :: forall (st :: ZeroBitType) r e a. ParserT st r e a -> ParserT st r e a -> ParserT st r e a
- FlatParse.Stateful: anyAsciiChar :: ParserT st r e Char
+ FlatParse.Stateful: anyAsciiChar :: forall (st :: ZeroBitType) r e. ParserT st r e Char
- FlatParse.Stateful: anyAsciiDecimalInt :: ParserT st r e Int
+ FlatParse.Stateful: anyAsciiDecimalInt :: forall (st :: ZeroBitType) r e. ParserT st r e Int
- FlatParse.Stateful: anyAsciiDecimalInteger :: ParserT st r e Integer
+ FlatParse.Stateful: anyAsciiDecimalInteger :: forall (st :: ZeroBitType) r e. ParserT st r e Integer
- FlatParse.Stateful: anyAsciiDecimalWord :: ParserT st r e Word
+ FlatParse.Stateful: anyAsciiDecimalWord :: forall (st :: ZeroBitType) r e. ParserT st r e Word
- FlatParse.Stateful: anyAsciiHexInt :: ParserT st r e Int
+ FlatParse.Stateful: anyAsciiHexInt :: forall (st :: ZeroBitType) r e. ParserT st r e Int
- FlatParse.Stateful: anyAsciiHexWord :: ParserT st r e Word
+ FlatParse.Stateful: anyAsciiHexWord :: forall (st :: ZeroBitType) r e. ParserT st r e Word
- FlatParse.Stateful: anyCString :: ParserT st r e ByteString
+ FlatParse.Stateful: anyCString :: forall (st :: ZeroBitType) r e. ParserT st r e ByteString
- FlatParse.Stateful: anyCStringUnsafe :: ParserT st r e ByteString
+ FlatParse.Stateful: anyCStringUnsafe :: forall (st :: ZeroBitType) r e. ParserT st r e ByteString
- FlatParse.Stateful: anyChar :: ParserT st r e Char
+ FlatParse.Stateful: anyChar :: forall (st :: ZeroBitType) r e. ParserT st r e Char
- FlatParse.Stateful: anyVarintProtobuf :: ParserT st r e Int
+ FlatParse.Stateful: anyVarintProtobuf :: forall (st :: ZeroBitType) r e. ParserT st r e Int
- FlatParse.Stateful: ask :: ParserT st r e r
+ FlatParse.Stateful: ask :: forall (st :: ZeroBitType) r e. ParserT st r e r
- FlatParse.Stateful: atSkip# :: Int# -> ParserT st r e ret -> ParserT st r e ret
+ FlatParse.Stateful: atSkip# :: forall (st :: ZeroBitType) r e ret. Int# -> ParserT st r e ret -> ParserT st r e ret
- FlatParse.Stateful: atSkipUnsafe# :: Int# -> ParserT st r e ret -> ParserT st r e ret
+ FlatParse.Stateful: atSkipUnsafe# :: forall (st :: ZeroBitType) r e ret. Int# -> ParserT st r e ret -> ParserT st r e ret
- FlatParse.Stateful: branch :: ParserT st r e a -> ParserT st r e b -> ParserT st r e b -> ParserT st r e b
+ FlatParse.Stateful: branch :: forall (st :: ZeroBitType) r e a b. ParserT st r e a -> ParserT st r e b -> ParserT st r e b -> ParserT st r e b
- FlatParse.Stateful: byteString :: ByteString -> ParserT st r e ()
+ FlatParse.Stateful: byteString :: forall (st :: ZeroBitType) r e. ByteString -> ParserT st r e ()
- FlatParse.Stateful: byteStringOf :: ParserT st r e a -> ParserT st r e ByteString
+ FlatParse.Stateful: byteStringOf :: forall (st :: ZeroBitType) r e a. ParserT st r e a -> ParserT st r e ByteString
- FlatParse.Stateful: chainl :: (b -> a -> b) -> ParserT st r e b -> ParserT st r e a -> ParserT st r e b
+ FlatParse.Stateful: chainl :: forall b a (st :: ZeroBitType) r e. (b -> a -> b) -> ParserT st r e b -> ParserT st r e a -> ParserT st r e b
- FlatParse.Stateful: chainr :: (a -> b -> b) -> ParserT st r e a -> ParserT st r e b -> ParserT st r e b
+ FlatParse.Stateful: chainr :: forall a b (st :: ZeroBitType) r e. (a -> b -> b) -> ParserT st r e a -> ParserT st r e b -> ParserT st r e b
- FlatParse.Stateful: cut :: ParserT st r e a -> e -> ParserT st r e a
+ FlatParse.Stateful: cut :: forall (st :: ZeroBitType) r e a. ParserT st r e a -> e -> ParserT st r e a
- FlatParse.Stateful: cutting :: ParserT st r e a -> e -> (e -> e -> e) -> ParserT st r e a
+ FlatParse.Stateful: cutting :: forall (st :: ZeroBitType) r e a. ParserT st r e a -> e -> (e -> e -> e) -> ParserT st r e a
- FlatParse.Stateful: embedParser :: forall s r e a. Parser r e a -> ParserT s r e a
+ FlatParse.Stateful: embedParser :: forall (s :: ZeroBitType) r e a. Parser r e a -> ParserT s r e a
- FlatParse.Stateful: embedParserST :: forall s r e a. (forall s. ParserST s r e a) -> ParserT s r e a
+ FlatParse.Stateful: embedParserST :: forall (s :: ZeroBitType) r e a. (forall s1. () => ParserST s1 r e a) -> ParserT s r e a
- FlatParse.Stateful: ensure :: Int -> ParserT st r e ()
+ FlatParse.Stateful: ensure :: forall (st :: ZeroBitType) r e. Int -> ParserT st r e ()
- FlatParse.Stateful: ensure# :: Int# -> ParserT st r e ()
+ FlatParse.Stateful: ensure# :: forall (st :: ZeroBitType) r e. Int# -> ParserT st r e ()
- FlatParse.Stateful: eof :: ParserT st r e ()
+ FlatParse.Stateful: eof :: forall (st :: ZeroBitType) r e. ParserT st r e ()
- FlatParse.Stateful: err :: e -> ParserT st r e a
+ FlatParse.Stateful: err :: forall e (st :: ZeroBitType) r a. e -> ParserT st r e a
- FlatParse.Stateful: failed :: ParserT st r e a
+ FlatParse.Stateful: failed :: forall (st :: ZeroBitType) r e a. ParserT st r e a
- FlatParse.Stateful: fails :: ParserT st r e a -> ParserT st r e ()
+ FlatParse.Stateful: fails :: forall (st :: ZeroBitType) r e a. ParserT st r e a -> ParserT st r e ()
- FlatParse.Stateful: fusedSatisfy :: (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool) -> ParserT st r e Char
+ FlatParse.Stateful: fusedSatisfy :: forall (st :: ZeroBitType) r e. (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool) -> ParserT st r e Char
- FlatParse.Stateful: get :: ParserT st r e Int
+ FlatParse.Stateful: get :: forall (st :: ZeroBitType) r e. ParserT st r e Int
- FlatParse.Stateful: getPos :: ParserT st r e Pos
+ FlatParse.Stateful: getPos :: forall (st :: ZeroBitType) r e. ParserT st r e Pos
- FlatParse.Stateful: inSpan :: Span -> ParserT st r e a -> ParserT st r e a
+ FlatParse.Stateful: inSpan :: forall (st :: ZeroBitType) r e a. Span -> ParserT st r e a -> ParserT st r e a
- FlatParse.Stateful: isolate :: Int -> ParserT st r e a -> ParserT st r e a
+ FlatParse.Stateful: isolate :: forall (st :: ZeroBitType) r e a. Int -> ParserT st r e a -> ParserT st r e a
- FlatParse.Stateful: isolate# :: Int# -> ParserT st r e a -> ParserT st r e a
+ FlatParse.Stateful: isolate# :: forall (st :: ZeroBitType) r e a. Int# -> ParserT st r e a -> ParserT st r e a
- FlatParse.Stateful: isolateToNextNull :: ParserT st r e a -> ParserT st r e a
+ FlatParse.Stateful: isolateToNextNull :: forall (st :: ZeroBitType) r e a. ParserT st r e a -> ParserT st r e a
- FlatParse.Stateful: isolateUnsafe# :: Int# -> ParserT st r e ret -> ParserT st r e ret
+ FlatParse.Stateful: isolateUnsafe# :: forall (st :: ZeroBitType) r e ret. Int# -> ParserT st r e ret -> ParserT st r e ret
- FlatParse.Stateful: local :: (r -> r) -> ParserT st r e a -> ParserT st r e a
+ FlatParse.Stateful: local :: forall r (st :: ZeroBitType) e a. (r -> r) -> ParserT st r e a -> ParserT st r e a
- FlatParse.Stateful: lookahead :: ParserT st r e a -> ParserT st r e a
+ FlatParse.Stateful: lookahead :: forall (st :: ZeroBitType) r e a. ParserT st r e a -> ParserT st r e a
- FlatParse.Stateful: modify :: (Int -> Int) -> ParserT st r e ()
+ FlatParse.Stateful: modify :: forall (st :: ZeroBitType) r e. (Int -> Int) -> ParserT st r e ()
- FlatParse.Stateful: notFollowedBy :: ParserT st r e a -> ParserT st r e b -> ParserT st r e a
+ FlatParse.Stateful: notFollowedBy :: forall (st :: ZeroBitType) r e a b. ParserT st r e a -> ParserT st r e b -> ParserT st r e a
- FlatParse.Stateful: optional :: ParserT st r e a -> ParserT st r e (Maybe a)
+ FlatParse.Stateful: optional :: forall (st :: ZeroBitType) r e a. ParserT st r e a -> ParserT st r e (Maybe a)
- FlatParse.Stateful: optional_ :: ParserT st r e a -> ParserT st r e ()
+ FlatParse.Stateful: optional_ :: forall (st :: ZeroBitType) r e a. ParserT st r e a -> ParserT st r e ()
- FlatParse.Stateful: pattern Err# :: (st :: ZeroBitType) -> e -> Res# st e a
+ FlatParse.Stateful: pattern Err# :: st -> e -> Res# st e a
- FlatParse.Stateful: pattern Fail# :: (st :: ZeroBitType) -> Res# st e a
+ FlatParse.Stateful: pattern Fail# :: st -> Res# st e a
- FlatParse.Stateful: pattern OK# :: (st :: ZeroBitType) -> a -> Addr# -> Int# -> Res# st e a
+ FlatParse.Stateful: pattern OK# :: st -> a -> Addr# -> Int# -> Res# st e a
- FlatParse.Stateful: put :: Int -> ParserT st r e ()
+ FlatParse.Stateful: put :: forall (st :: ZeroBitType) r e. Int -> ParserT st r e ()
- FlatParse.Stateful: satisfy :: (Char -> Bool) -> ParserT st r e Char
+ FlatParse.Stateful: satisfy :: forall (st :: ZeroBitType) r e. (Char -> Bool) -> ParserT st r e Char
- FlatParse.Stateful: satisfyAscii :: (Char -> Bool) -> ParserT st r e Char
+ FlatParse.Stateful: satisfyAscii :: forall (st :: ZeroBitType) r e. (Char -> Bool) -> ParserT st r e Char
- FlatParse.Stateful: setPos :: Pos -> ParserT st r e ()
+ FlatParse.Stateful: setPos :: forall (st :: ZeroBitType) r e. Pos -> ParserT st r e ()
- FlatParse.Stateful: skip :: Int -> ParserT st r e ()
+ FlatParse.Stateful: skip :: forall (st :: ZeroBitType) r e. Int -> ParserT st r e ()
- FlatParse.Stateful: skip# :: Int# -> ParserT st r e ()
+ FlatParse.Stateful: skip# :: forall (st :: ZeroBitType) r e. Int# -> ParserT st r e ()
- FlatParse.Stateful: skipAnyAsciiChar :: ParserT st r e ()
+ FlatParse.Stateful: skipAnyAsciiChar :: forall (st :: ZeroBitType) r e. ParserT st r e ()
- FlatParse.Stateful: skipAnyChar :: ParserT st r e ()
+ FlatParse.Stateful: skipAnyChar :: forall (st :: ZeroBitType) r e. ParserT st r e ()
- FlatParse.Stateful: skipBack :: Int -> ParserT st r e ()
+ FlatParse.Stateful: skipBack :: forall (st :: ZeroBitType) r e. Int -> ParserT st r e ()
- FlatParse.Stateful: skipBack# :: Int# -> ParserT st r e ()
+ FlatParse.Stateful: skipBack# :: forall (st :: ZeroBitType) r e. Int# -> ParserT st r e ()
- FlatParse.Stateful: skipFusedSatisfy :: (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool) -> ParserT st r e ()
+ FlatParse.Stateful: skipFusedSatisfy :: forall (st :: ZeroBitType) r e. (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool) -> ParserT st r e ()
- FlatParse.Stateful: skipMany :: ParserT st r e a -> ParserT st r e ()
+ FlatParse.Stateful: skipMany :: forall (st :: ZeroBitType) r e a. ParserT st r e a -> ParserT st r e ()
- FlatParse.Stateful: skipSatisfy :: (Char -> Bool) -> ParserT st r e ()
+ FlatParse.Stateful: skipSatisfy :: forall (st :: ZeroBitType) r e. (Char -> Bool) -> ParserT st r e ()
- FlatParse.Stateful: skipSatisfyAscii :: (Char -> Bool) -> ParserT st r e ()
+ FlatParse.Stateful: skipSatisfyAscii :: forall (st :: ZeroBitType) r e. (Char -> Bool) -> ParserT st r e ()
- FlatParse.Stateful: skipSome :: ParserT st r e a -> ParserT st r e ()
+ FlatParse.Stateful: skipSome :: forall (st :: ZeroBitType) r e a. ParserT st r e a -> ParserT st r e ()
- FlatParse.Stateful: spanOf :: ParserT st r e a -> ParserT st r e Span
+ FlatParse.Stateful: spanOf :: forall (st :: ZeroBitType) r e a. ParserT st r e a -> ParserT st r e Span
- FlatParse.Stateful: take :: Int -> ParserT st r e ByteString
+ FlatParse.Stateful: take :: forall (st :: ZeroBitType) r e. Int -> ParserT st r e ByteString
- FlatParse.Stateful: take# :: Int# -> ParserT st r e ByteString
+ FlatParse.Stateful: take# :: forall (st :: ZeroBitType) r e. Int# -> ParserT st r e ByteString
- FlatParse.Stateful: takeLine :: ParserT st r e String
+ FlatParse.Stateful: takeLine :: forall (st :: ZeroBitType) r e. ParserT st r e String
- FlatParse.Stateful: takeRest :: ParserT st r e ByteString
+ FlatParse.Stateful: takeRest :: forall (st :: ZeroBitType) r e. ParserT st r e ByteString
- FlatParse.Stateful: takeRestString :: ParserT st r e String
+ FlatParse.Stateful: takeRestString :: forall (st :: ZeroBitType) r e. ParserT st r e String
- FlatParse.Stateful: takeUnsafe# :: Int# -> ParserT st r e ByteString
+ FlatParse.Stateful: takeUnsafe# :: forall (st :: ZeroBitType) r e. Int# -> ParserT st r e ByteString
- FlatParse.Stateful: traceLine :: ParserT st r e String
+ FlatParse.Stateful: traceLine :: forall (st :: ZeroBitType) r e. ParserT st r e String
- FlatParse.Stateful: traceRest :: ParserT st r e String
+ FlatParse.Stateful: traceRest :: forall (st :: ZeroBitType) r e. ParserT st r e String
- FlatParse.Stateful: try :: ParserT st r e a -> ParserT st r e a
+ FlatParse.Stateful: try :: forall (st :: ZeroBitType) r e a. ParserT st r e a -> ParserT st r e a
- FlatParse.Stateful: type ParserST s = ParserT (STMode s)
+ FlatParse.Stateful: type ParserST s = ParserT STMode s
- FlatParse.Stateful: unsafeLiftIO :: IO a -> ParserT st r e a
+ FlatParse.Stateful: unsafeLiftIO :: forall a (st :: ZeroBitType) r e. IO a -> ParserT st r e a
- FlatParse.Stateful: unsafeSpanToByteString :: Span -> ParserT st r e ByteString
+ FlatParse.Stateful: unsafeSpanToByteString :: forall (st :: ZeroBitType) r e. Span -> ParserT st r e ByteString
- FlatParse.Stateful: withAnyResult :: ParserT st r t a -> (a -> ParserT st r e b) -> ParserT st r e b -> (t -> ParserT st r e b) -> ParserT st r e b
+ FlatParse.Stateful: withAnyResult :: forall (st :: ZeroBitType) r t a e b. ParserT st r t a -> (a -> ParserT st r e b) -> ParserT st r e b -> (t -> ParserT st r e b) -> ParserT st r e b
- FlatParse.Stateful: withByteString :: ParserT st r e a -> (a -> ByteString -> ParserT st r e b) -> ParserT st r e b
+ FlatParse.Stateful: withByteString :: forall (st :: ZeroBitType) r e a b. ParserT st r e a -> (a -> ByteString -> ParserT st r e b) -> ParserT st r e b
- FlatParse.Stateful: withEnsure :: Int -> ParserT st r e ret -> ParserT st r e ret
+ FlatParse.Stateful: withEnsure :: forall (st :: ZeroBitType) r e ret. Int -> ParserT st r e ret -> ParserT st r e ret
- FlatParse.Stateful: withEnsure# :: Int# -> ParserT st r e ret -> ParserT st r e ret
+ FlatParse.Stateful: withEnsure# :: forall (st :: ZeroBitType) r e ret. Int# -> ParserT st r e ret -> ParserT st r e ret
- FlatParse.Stateful: withEnsure1 :: ParserT st r e ret -> ParserT st r e ret
+ FlatParse.Stateful: withEnsure1 :: forall (st :: ZeroBitType) r e ret. ParserT st r e ret -> ParserT st r e ret
- FlatParse.Stateful: withError :: ParserT st r e b -> (e -> ParserT st r e b) -> ParserT st r e b
+ FlatParse.Stateful: withError :: forall (st :: ZeroBitType) r e b. ParserT st r e b -> (e -> ParserT st r e b) -> ParserT st r e b
- FlatParse.Stateful: withOption :: ParserT st r e a -> (a -> ParserT st r e ret) -> ParserT st r e ret -> ParserT st r e ret
+ FlatParse.Stateful: withOption :: forall (st :: ZeroBitType) r e a ret. ParserT st r e a -> (a -> ParserT st r e ret) -> ParserT st r e ret -> ParserT st r e ret
- FlatParse.Stateful: withSpan :: ParserT st r e a -> (a -> Span -> ParserT st r e b) -> ParserT st r e b
+ FlatParse.Stateful: withSpan :: forall (st :: ZeroBitType) r e a b. ParserT st r e a -> (a -> Span -> ParserT st r e b) -> ParserT st r e b
- FlatParse.Stateful.Addr: atAddr# :: Addr# -> ParserT st r e a -> ParserT st r e a
+ FlatParse.Stateful.Addr: atAddr# :: forall (st :: ZeroBitType) r e a. Addr# -> ParserT st r e a -> ParserT st r e a
- FlatParse.Stateful.Addr: lookaheadFromAddr# :: Addr# -> ParserT st r e a -> ParserT st r e a
+ FlatParse.Stateful.Addr: lookaheadFromAddr# :: forall (st :: ZeroBitType) r e a. Addr# -> ParserT st r e a -> ParserT st r e a
- FlatParse.Stateful.Addr: takeOffAddr# :: Addr# -> Int# -> Int# -> ParserT st r e ByteString
+ FlatParse.Stateful.Addr: takeOffAddr# :: forall (st :: ZeroBitType) r e. Addr# -> Int# -> Int# -> ParserT st r e ByteString
- FlatParse.Stateful.Addr: withAddr# :: (Addr# -> ParserT st r e a) -> ParserT st r e a
+ FlatParse.Stateful.Addr: withAddr# :: forall (st :: ZeroBitType) r e a. (Addr# -> ParserT st r e a) -> ParserT st r e a
- FlatParse.Stateful.Addr: withOffAddr# :: Addr# -> Int# -> ParserT st r e a -> ParserT st r e a
+ FlatParse.Stateful.Addr: withOffAddr# :: forall (st :: ZeroBitType) r e a. Addr# -> Int# -> ParserT st r e a -> ParserT st r e a
- FlatParse.Stateful.Base: atSkip# :: Int# -> ParserT st r e ret -> ParserT st r e ret
+ FlatParse.Stateful.Base: atSkip# :: forall (st :: ZeroBitType) r e ret. Int# -> ParserT st r e ret -> ParserT st r e ret
- FlatParse.Stateful.Base: atSkipUnsafe# :: Int# -> ParserT st r e ret -> ParserT st r e ret
+ FlatParse.Stateful.Base: atSkipUnsafe# :: forall (st :: ZeroBitType) r e ret. Int# -> ParserT st r e ret -> ParserT st r e ret
- FlatParse.Stateful.Base: branch :: ParserT st r e a -> ParserT st r e b -> ParserT st r e b -> ParserT st r e b
+ FlatParse.Stateful.Base: branch :: forall (st :: ZeroBitType) r e a b. ParserT st r e a -> ParserT st r e b -> ParserT st r e b -> ParserT st r e b
- FlatParse.Stateful.Base: chainl :: (b -> a -> b) -> ParserT st r e b -> ParserT st r e a -> ParserT st r e b
+ FlatParse.Stateful.Base: chainl :: forall b a (st :: ZeroBitType) r e. (b -> a -> b) -> ParserT st r e b -> ParserT st r e a -> ParserT st r e b
- FlatParse.Stateful.Base: chainr :: (a -> b -> b) -> ParserT st r e a -> ParserT st r e b -> ParserT st r e b
+ FlatParse.Stateful.Base: chainr :: forall a b (st :: ZeroBitType) r e. (a -> b -> b) -> ParserT st r e a -> ParserT st r e b -> ParserT st r e b
- FlatParse.Stateful.Base: cut :: ParserT st r e a -> e -> ParserT st r e a
+ FlatParse.Stateful.Base: cut :: forall (st :: ZeroBitType) r e a. ParserT st r e a -> e -> ParserT st r e a
- FlatParse.Stateful.Base: cutting :: ParserT st r e a -> e -> (e -> e -> e) -> ParserT st r e a
+ FlatParse.Stateful.Base: cutting :: forall (st :: ZeroBitType) r e a. ParserT st r e a -> e -> (e -> e -> e) -> ParserT st r e a
- FlatParse.Stateful.Base: ensure :: Int -> ParserT st r e ()
+ FlatParse.Stateful.Base: ensure :: forall (st :: ZeroBitType) r e. Int -> ParserT st r e ()
- FlatParse.Stateful.Base: ensure# :: Int# -> ParserT st r e ()
+ FlatParse.Stateful.Base: ensure# :: forall (st :: ZeroBitType) r e. Int# -> ParserT st r e ()
- FlatParse.Stateful.Base: eof :: ParserT st r e ()
+ FlatParse.Stateful.Base: eof :: forall (st :: ZeroBitType) r e. ParserT st r e ()
- FlatParse.Stateful.Base: err :: e -> ParserT st r e a
+ FlatParse.Stateful.Base: err :: forall e (st :: ZeroBitType) r a. e -> ParserT st r e a
- FlatParse.Stateful.Base: failed :: ParserT st r e a
+ FlatParse.Stateful.Base: failed :: forall (st :: ZeroBitType) r e a. ParserT st r e a
- FlatParse.Stateful.Base: fails :: ParserT st r e a -> ParserT st r e ()
+ FlatParse.Stateful.Base: fails :: forall (st :: ZeroBitType) r e a. ParserT st r e a -> ParserT st r e ()
- FlatParse.Stateful.Base: isolate :: Int -> ParserT st r e a -> ParserT st r e a
+ FlatParse.Stateful.Base: isolate :: forall (st :: ZeroBitType) r e a. Int -> ParserT st r e a -> ParserT st r e a
- FlatParse.Stateful.Base: isolate# :: Int# -> ParserT st r e a -> ParserT st r e a
+ FlatParse.Stateful.Base: isolate# :: forall (st :: ZeroBitType) r e a. Int# -> ParserT st r e a -> ParserT st r e a
- FlatParse.Stateful.Base: isolateUnsafe# :: Int# -> ParserT st r e ret -> ParserT st r e ret
+ FlatParse.Stateful.Base: isolateUnsafe# :: forall (st :: ZeroBitType) r e ret. Int# -> ParserT st r e ret -> ParserT st r e ret
- FlatParse.Stateful.Base: lookahead :: ParserT st r e a -> ParserT st r e a
+ FlatParse.Stateful.Base: lookahead :: forall (st :: ZeroBitType) r e a. ParserT st r e a -> ParserT st r e a
- FlatParse.Stateful.Base: notFollowedBy :: ParserT st r e a -> ParserT st r e b -> ParserT st r e a
+ FlatParse.Stateful.Base: notFollowedBy :: forall (st :: ZeroBitType) r e a b. ParserT st r e a -> ParserT st r e b -> ParserT st r e a
- FlatParse.Stateful.Base: optional :: ParserT st r e a -> ParserT st r e (Maybe a)
+ FlatParse.Stateful.Base: optional :: forall (st :: ZeroBitType) r e a. ParserT st r e a -> ParserT st r e (Maybe a)
- FlatParse.Stateful.Base: optional_ :: ParserT st r e a -> ParserT st r e ()
+ FlatParse.Stateful.Base: optional_ :: forall (st :: ZeroBitType) r e a. ParserT st r e a -> ParserT st r e ()
- FlatParse.Stateful.Base: skip :: Int -> ParserT st r e ()
+ FlatParse.Stateful.Base: skip :: forall (st :: ZeroBitType) r e. Int -> ParserT st r e ()
- FlatParse.Stateful.Base: skip# :: Int# -> ParserT st r e ()
+ FlatParse.Stateful.Base: skip# :: forall (st :: ZeroBitType) r e. Int# -> ParserT st r e ()
- FlatParse.Stateful.Base: skipBack :: Int -> ParserT st r e ()
+ FlatParse.Stateful.Base: skipBack :: forall (st :: ZeroBitType) r e. Int -> ParserT st r e ()
- FlatParse.Stateful.Base: skipBack# :: Int# -> ParserT st r e ()
+ FlatParse.Stateful.Base: skipBack# :: forall (st :: ZeroBitType) r e. Int# -> ParserT st r e ()
- FlatParse.Stateful.Base: skipMany :: ParserT st r e a -> ParserT st r e ()
+ FlatParse.Stateful.Base: skipMany :: forall (st :: ZeroBitType) r e a. ParserT st r e a -> ParserT st r e ()
- FlatParse.Stateful.Base: skipSome :: ParserT st r e a -> ParserT st r e ()
+ FlatParse.Stateful.Base: skipSome :: forall (st :: ZeroBitType) r e a. ParserT st r e a -> ParserT st r e ()
- FlatParse.Stateful.Base: take :: Int -> ParserT st r e ByteString
+ FlatParse.Stateful.Base: take :: forall (st :: ZeroBitType) r e. Int -> ParserT st r e ByteString
- FlatParse.Stateful.Base: take# :: Int# -> ParserT st r e ByteString
+ FlatParse.Stateful.Base: take# :: forall (st :: ZeroBitType) r e. Int# -> ParserT st r e ByteString
- FlatParse.Stateful.Base: takeRest :: ParserT st r e ByteString
+ FlatParse.Stateful.Base: takeRest :: forall (st :: ZeroBitType) r e. ParserT st r e ByteString
- FlatParse.Stateful.Base: takeUnsafe# :: Int# -> ParserT st r e ByteString
+ FlatParse.Stateful.Base: takeUnsafe# :: forall (st :: ZeroBitType) r e. Int# -> ParserT st r e ByteString
- FlatParse.Stateful.Base: try :: ParserT st r e a -> ParserT st r e a
+ FlatParse.Stateful.Base: try :: forall (st :: ZeroBitType) r e a. ParserT st r e a -> ParserT st r e a
- FlatParse.Stateful.Base: withAnyResult :: ParserT st r t a -> (a -> ParserT st r e b) -> ParserT st r e b -> (t -> ParserT st r e b) -> ParserT st r e b
+ FlatParse.Stateful.Base: withAnyResult :: forall (st :: ZeroBitType) r t a e b. ParserT st r t a -> (a -> ParserT st r e b) -> ParserT st r e b -> (t -> ParserT st r e b) -> ParserT st r e b
- FlatParse.Stateful.Base: withEnsure :: Int -> ParserT st r e ret -> ParserT st r e ret
+ FlatParse.Stateful.Base: withEnsure :: forall (st :: ZeroBitType) r e ret. Int -> ParserT st r e ret -> ParserT st r e ret
- FlatParse.Stateful.Base: withEnsure# :: Int# -> ParserT st r e ret -> ParserT st r e ret
+ FlatParse.Stateful.Base: withEnsure# :: forall (st :: ZeroBitType) r e ret. Int# -> ParserT st r e ret -> ParserT st r e ret
- FlatParse.Stateful.Base: withEnsure1 :: ParserT st r e ret -> ParserT st r e ret
+ FlatParse.Stateful.Base: withEnsure1 :: forall (st :: ZeroBitType) r e ret. ParserT st r e ret -> ParserT st r e ret
- FlatParse.Stateful.Base: withError :: ParserT st r e b -> (e -> ParserT st r e b) -> ParserT st r e b
+ FlatParse.Stateful.Base: withError :: forall (st :: ZeroBitType) r e b. ParserT st r e b -> (e -> ParserT st r e b) -> ParserT st r e b
- FlatParse.Stateful.Base: withOption :: ParserT st r e a -> (a -> ParserT st r e ret) -> ParserT st r e ret -> ParserT st r e ret
+ FlatParse.Stateful.Base: withOption :: forall (st :: ZeroBitType) r e a ret. ParserT st r e a -> (a -> ParserT st r e ret) -> ParserT st r e ret -> ParserT st r e ret
- FlatParse.Stateful.Integers: anyInt :: ParserT st r e Int
+ FlatParse.Stateful.Integers: anyInt :: forall (st :: ZeroBitType) r e. ParserT st r e Int
- FlatParse.Stateful.Integers: anyInt16 :: ParserT st r e Int16
+ FlatParse.Stateful.Integers: anyInt16 :: forall (st :: ZeroBitType) r e. ParserT st r e Int16
- FlatParse.Stateful.Integers: anyInt16be :: ParserT st r e Int16
+ FlatParse.Stateful.Integers: anyInt16be :: forall (st :: ZeroBitType) r e. ParserT st r e Int16
- FlatParse.Stateful.Integers: anyInt16le :: ParserT st r e Int16
+ FlatParse.Stateful.Integers: anyInt16le :: forall (st :: ZeroBitType) r e. ParserT st r e Int16
- FlatParse.Stateful.Integers: anyInt32 :: ParserT st r e Int32
+ FlatParse.Stateful.Integers: anyInt32 :: forall (st :: ZeroBitType) r e. ParserT st r e Int32
- FlatParse.Stateful.Integers: anyInt32be :: ParserT st r e Int32
+ FlatParse.Stateful.Integers: anyInt32be :: forall (st :: ZeroBitType) r e. ParserT st r e Int32
- FlatParse.Stateful.Integers: anyInt32le :: ParserT st r e Int32
+ FlatParse.Stateful.Integers: anyInt32le :: forall (st :: ZeroBitType) r e. ParserT st r e Int32
- FlatParse.Stateful.Integers: anyInt64 :: ParserT st r e Int64
+ FlatParse.Stateful.Integers: anyInt64 :: forall (st :: ZeroBitType) r e. ParserT st r e Int64
- FlatParse.Stateful.Integers: anyInt64be :: ParserT st r e Int64
+ FlatParse.Stateful.Integers: anyInt64be :: forall (st :: ZeroBitType) r e. ParserT st r e Int64
- FlatParse.Stateful.Integers: anyInt64le :: ParserT st r e Int64
+ FlatParse.Stateful.Integers: anyInt64le :: forall (st :: ZeroBitType) r e. ParserT st r e Int64
- FlatParse.Stateful.Integers: anyInt8 :: ParserT st r e Int8
+ FlatParse.Stateful.Integers: anyInt8 :: forall (st :: ZeroBitType) r e. ParserT st r e Int8
- FlatParse.Stateful.Integers: anyWord :: ParserT st r e Word
+ FlatParse.Stateful.Integers: anyWord :: forall (st :: ZeroBitType) r e. ParserT st r e Word
- FlatParse.Stateful.Integers: anyWord16 :: ParserT st r e Word16
+ FlatParse.Stateful.Integers: anyWord16 :: forall (st :: ZeroBitType) r e. ParserT st r e Word16
- FlatParse.Stateful.Integers: anyWord16be :: ParserT st r e Word16
+ FlatParse.Stateful.Integers: anyWord16be :: forall (st :: ZeroBitType) r e. ParserT st r e Word16
- FlatParse.Stateful.Integers: anyWord16le :: ParserT st r e Word16
+ FlatParse.Stateful.Integers: anyWord16le :: forall (st :: ZeroBitType) r e. ParserT st r e Word16
- FlatParse.Stateful.Integers: anyWord32 :: ParserT st r e Word32
+ FlatParse.Stateful.Integers: anyWord32 :: forall (st :: ZeroBitType) r e. ParserT st r e Word32
- FlatParse.Stateful.Integers: anyWord32be :: ParserT st r e Word32
+ FlatParse.Stateful.Integers: anyWord32be :: forall (st :: ZeroBitType) r e. ParserT st r e Word32
- FlatParse.Stateful.Integers: anyWord32le :: ParserT st r e Word32
+ FlatParse.Stateful.Integers: anyWord32le :: forall (st :: ZeroBitType) r e. ParserT st r e Word32
- FlatParse.Stateful.Integers: anyWord64 :: ParserT st r e Word64
+ FlatParse.Stateful.Integers: anyWord64 :: forall (st :: ZeroBitType) r e. ParserT st r e Word64
- FlatParse.Stateful.Integers: anyWord64be :: ParserT st r e Word64
+ FlatParse.Stateful.Integers: anyWord64be :: forall (st :: ZeroBitType) r e. ParserT st r e Word64
- FlatParse.Stateful.Integers: anyWord64le :: ParserT st r e Word64
+ FlatParse.Stateful.Integers: anyWord64le :: forall (st :: ZeroBitType) r e. ParserT st r e Word64
- FlatParse.Stateful.Integers: anyWord8 :: ParserT st r e Word8
+ FlatParse.Stateful.Integers: anyWord8 :: forall (st :: ZeroBitType) r e. ParserT st r e Word8
- FlatParse.Stateful.Integers: anyWord8Unsafe :: ParserT st r e Word8
+ FlatParse.Stateful.Integers: anyWord8Unsafe :: forall (st :: ZeroBitType) r e. ParserT st r e Word8
- FlatParse.Stateful.Integers: sizedUnsafe# :: Eq a => Int# -> (Addr# -> Int# -> a) -> a -> ParserT st r e ()
+ FlatParse.Stateful.Integers: sizedUnsafe# :: forall a (st :: ZeroBitType) r e. Eq a => Int# -> (Addr# -> Int# -> a) -> a -> ParserT st r e ()
- FlatParse.Stateful.Integers: withAnyInt :: (Int -> ParserT st r e ret) -> ParserT st r e ret
+ FlatParse.Stateful.Integers: withAnyInt :: forall (st :: ZeroBitType) r e ret. (Int -> ParserT st r e ret) -> ParserT st r e ret
- FlatParse.Stateful.Integers: withAnyInt16 :: (Int16 -> ParserT st r e ret) -> ParserT st r e ret
+ FlatParse.Stateful.Integers: withAnyInt16 :: forall (st :: ZeroBitType) r e ret. (Int16 -> ParserT st r e ret) -> ParserT st r e ret
- FlatParse.Stateful.Integers: withAnyInt32 :: (Int32 -> ParserT st r e ret) -> ParserT st r e ret
+ FlatParse.Stateful.Integers: withAnyInt32 :: forall (st :: ZeroBitType) r e ret. (Int32 -> ParserT st r e ret) -> ParserT st r e ret
- FlatParse.Stateful.Integers: withAnyInt64 :: (Int64 -> ParserT st r e ret) -> ParserT st r e ret
+ FlatParse.Stateful.Integers: withAnyInt64 :: forall (st :: ZeroBitType) r e ret. (Int64 -> ParserT st r e ret) -> ParserT st r e ret
- FlatParse.Stateful.Integers: withAnyInt8 :: (Int8 -> ParserT st r e ret) -> ParserT st r e ret
+ FlatParse.Stateful.Integers: withAnyInt8 :: forall (st :: ZeroBitType) r e ret. (Int8 -> ParserT st r e ret) -> ParserT st r e ret
- FlatParse.Stateful.Integers: withAnySized# :: Int# -> (Addr# -> Int# -> a) -> (a -> ParserT st r e ret) -> ParserT st r e ret
+ FlatParse.Stateful.Integers: withAnySized# :: forall a (st :: ZeroBitType) r e ret. Int# -> (Addr# -> Int# -> a) -> (a -> ParserT st r e ret) -> ParserT st r e ret
- FlatParse.Stateful.Integers: withAnySizedUnsafe# :: Int# -> (Addr# -> Int# -> a) -> (a -> ParserT st r e ret) -> ParserT st r e ret
+ FlatParse.Stateful.Integers: withAnySizedUnsafe# :: forall a (st :: ZeroBitType) r e ret. Int# -> (Addr# -> Int# -> a) -> (a -> ParserT st r e ret) -> ParserT st r e ret
- FlatParse.Stateful.Integers: withAnyWord :: (Word -> ParserT st r e ret) -> ParserT st r e ret
+ FlatParse.Stateful.Integers: withAnyWord :: forall (st :: ZeroBitType) r e ret. (Word -> ParserT st r e ret) -> ParserT st r e ret
- FlatParse.Stateful.Integers: withAnyWord16 :: (Word16 -> ParserT st r e ret) -> ParserT st r e ret
+ FlatParse.Stateful.Integers: withAnyWord16 :: forall (st :: ZeroBitType) r e ret. (Word16 -> ParserT st r e ret) -> ParserT st r e ret
- FlatParse.Stateful.Integers: withAnyWord32 :: (Word32 -> ParserT st r e ret) -> ParserT st r e ret
+ FlatParse.Stateful.Integers: withAnyWord32 :: forall (st :: ZeroBitType) r e ret. (Word32 -> ParserT st r e ret) -> ParserT st r e ret
- FlatParse.Stateful.Integers: withAnyWord64 :: (Word64 -> ParserT st r e ret) -> ParserT st r e ret
+ FlatParse.Stateful.Integers: withAnyWord64 :: forall (st :: ZeroBitType) r e ret. (Word64 -> ParserT st r e ret) -> ParserT st r e ret
- FlatParse.Stateful.Integers: withAnyWord8 :: (Word8 -> ParserT st r e ret) -> ParserT st r e ret
+ FlatParse.Stateful.Integers: withAnyWord8 :: forall (st :: ZeroBitType) r e ret. (Word8 -> ParserT st r e ret) -> ParserT st r e ret
- FlatParse.Stateful.Integers: word16Unsafe :: Word16 -> ParserT st r e ()
+ FlatParse.Stateful.Integers: word16Unsafe :: forall (st :: ZeroBitType) r e. Word16 -> ParserT st r e ()
- FlatParse.Stateful.Integers: word32Unsafe :: Word32 -> ParserT st r e ()
+ FlatParse.Stateful.Integers: word32Unsafe :: forall (st :: ZeroBitType) r e. Word32 -> ParserT st r e ()
- FlatParse.Stateful.Integers: word64Unsafe :: Word64 -> ParserT st r e ()
+ FlatParse.Stateful.Integers: word64Unsafe :: forall (st :: ZeroBitType) r e. Word64 -> ParserT st r e ()
- FlatParse.Stateful.Integers: word8 :: Word8 -> ParserT st r e ()
+ FlatParse.Stateful.Integers: word8 :: forall (st :: ZeroBitType) r e. Word8 -> ParserT st r e ()
- FlatParse.Stateful.Integers: word8Unsafe :: Word8 -> ParserT st r e ()
+ FlatParse.Stateful.Integers: word8Unsafe :: forall (st :: ZeroBitType) r e. Word8 -> ParserT st r e ()
- FlatParse.Stateful.Parser: (<|>) :: ParserT st r e a -> ParserT st r e a -> ParserT st r e a
+ FlatParse.Stateful.Parser: (<|>) :: forall (st :: ZeroBitType) r e a. ParserT st r e a -> ParserT st r e a -> ParserT st r e a
- FlatParse.Stateful.Parser: pattern Err# :: (st :: ZeroBitType) -> e -> Res# st e a
+ FlatParse.Stateful.Parser: pattern Err# :: st -> e -> Res# st e a
- FlatParse.Stateful.Parser: pattern Fail# :: (st :: ZeroBitType) -> Res# st e a
+ FlatParse.Stateful.Parser: pattern Fail# :: st -> Res# st e a
- FlatParse.Stateful.Parser: pattern OK# :: (st :: ZeroBitType) -> a -> Addr# -> Int# -> Res# st e a
+ FlatParse.Stateful.Parser: pattern OK# :: st -> a -> Addr# -> Int# -> Res# st e a
- FlatParse.Stateful.Parser: pureLazy :: a -> ParserT st r e a
+ FlatParse.Stateful.Parser: pureLazy :: forall a (st :: ZeroBitType) r e. a -> ParserT st r e a
- FlatParse.Stateful.Parser: type ParserST s = ParserT (STMode s)
+ FlatParse.Stateful.Parser: type ParserST s = ParserT STMode s
- FlatParse.Stateful.Text: anyAsciiChar :: ParserT st r e Char
+ FlatParse.Stateful.Text: anyAsciiChar :: forall (st :: ZeroBitType) r e. ParserT st r e Char
- FlatParse.Stateful.Text: anyAsciiDecimalInt :: ParserT st r e Int
+ FlatParse.Stateful.Text: anyAsciiDecimalInt :: forall (st :: ZeroBitType) r e. ParserT st r e Int
- FlatParse.Stateful.Text: anyAsciiDecimalInteger :: ParserT st r e Integer
+ FlatParse.Stateful.Text: anyAsciiDecimalInteger :: forall (st :: ZeroBitType) r e. ParserT st r e Integer
- FlatParse.Stateful.Text: anyAsciiDecimalWord :: ParserT st r e Word
+ FlatParse.Stateful.Text: anyAsciiDecimalWord :: forall (st :: ZeroBitType) r e. ParserT st r e Word
- FlatParse.Stateful.Text: anyAsciiHexInt :: ParserT st r e Int
+ FlatParse.Stateful.Text: anyAsciiHexInt :: forall (st :: ZeroBitType) r e. ParserT st r e Int
- FlatParse.Stateful.Text: anyAsciiHexWord :: ParserT st r e Word
+ FlatParse.Stateful.Text: anyAsciiHexWord :: forall (st :: ZeroBitType) r e. ParserT st r e Word
- FlatParse.Stateful.Text: anyChar :: ParserT st r e Char
+ FlatParse.Stateful.Text: anyChar :: forall (st :: ZeroBitType) r e. ParserT st r e Char
- FlatParse.Stateful.Text: fusedSatisfy :: (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool) -> ParserT st r e Char
+ FlatParse.Stateful.Text: fusedSatisfy :: forall (st :: ZeroBitType) r e. (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool) -> ParserT st r e Char
- FlatParse.Stateful.Text: satisfy :: (Char -> Bool) -> ParserT st r e Char
+ FlatParse.Stateful.Text: satisfy :: forall (st :: ZeroBitType) r e. (Char -> Bool) -> ParserT st r e Char
- FlatParse.Stateful.Text: satisfyAscii :: (Char -> Bool) -> ParserT st r e Char
+ FlatParse.Stateful.Text: satisfyAscii :: forall (st :: ZeroBitType) r e. (Char -> Bool) -> ParserT st r e Char
- FlatParse.Stateful.Text: skipAnyAsciiChar :: ParserT st r e ()
+ FlatParse.Stateful.Text: skipAnyAsciiChar :: forall (st :: ZeroBitType) r e. ParserT st r e ()
- FlatParse.Stateful.Text: skipAnyChar :: ParserT st r e ()
+ FlatParse.Stateful.Text: skipAnyChar :: forall (st :: ZeroBitType) r e. ParserT st r e ()
- FlatParse.Stateful.Text: skipFusedSatisfy :: (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool) -> ParserT st r e ()
+ FlatParse.Stateful.Text: skipFusedSatisfy :: forall (st :: ZeroBitType) r e. (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool) -> (Char -> Bool) -> ParserT st r e ()
- FlatParse.Stateful.Text: skipSatisfy :: (Char -> Bool) -> ParserT st r e ()
+ FlatParse.Stateful.Text: skipSatisfy :: forall (st :: ZeroBitType) r e. (Char -> Bool) -> ParserT st r e ()
- FlatParse.Stateful.Text: skipSatisfyAscii :: (Char -> Bool) -> ParserT st r e ()
+ FlatParse.Stateful.Text: skipSatisfyAscii :: forall (st :: ZeroBitType) r e. (Char -> Bool) -> ParserT st r e ()
- FlatParse.Stateful.Text: takeLine :: ParserT st r e String
+ FlatParse.Stateful.Text: takeLine :: forall (st :: ZeroBitType) r e. ParserT st r e String
- FlatParse.Stateful.Text: takeRestString :: ParserT st r e String
+ FlatParse.Stateful.Text: takeRestString :: forall (st :: ZeroBitType) r e. ParserT st r e String
- FlatParse.Stateful.Text: traceLine :: ParserT st r e String
+ FlatParse.Stateful.Text: traceLine :: forall (st :: ZeroBitType) r e. ParserT st r e String
- FlatParse.Stateful.Text: traceRest :: ParserT st r e String
+ FlatParse.Stateful.Text: traceRest :: forall (st :: ZeroBitType) r e. ParserT st r e String
Files
- README.md +32/−31
- bench/Attoparsec.hs +6/−3
- bench/Bench.hs +1/−1
- bench/Megaparsec.hs +8/−5
- flatparse.cabal +7/−7
- src/FlatParse/Basic.hs +8/−3
- src/FlatParse/Basic/Bytes.hs +11/−6
- src/FlatParse/Basic/Integers.hs +2/−6
- src/FlatParse/Common/Assorted.hs +2/−2
- src/FlatParse/Common/Numbers.hs +8/−3
- src/FlatParse/Stateful.hs +8/−3
- src/FlatParse/Stateful/Bytes.hs +11/−6
- src/FlatParse/Stateful/Integers.hs +2/−6
- test/Test.hs +8/−4
README.md view
@@ -17,21 +17,22 @@ ## Features and non-features -* __Excellent performance__. On microbenchmarks, `flatparse` is around 10 times faster than `attoparsec` or `megaparsec`. On larger examples with heavier use of source positions and spans and/or indentation parsing, the performance difference grows to 20-30 times. Compile times and executable sizes are also significantly better with `flatparse` than with `megaparsec` or `attoparsec`. `flatparse` internals make liberal use of unboxed tuples and GHC primops. As a result, pure validators (parsers returning `()`) in `flatparse` are not difficult to implement with zero heap allocation.+* __Excellent performance__. On microbenchmarks, `flatparse` is around 5-10 times faster than `attoparsec` or `megaparsec`. On larger examples with heavier use of source positions and spans and/or indentation parsing, the performance difference is greater. Compile times and executable sizes are also significantly better with `flatparse` than with `megaparsec` or `attoparsec`. `flatparse` internals make liberal use of unboxed tuples and GHC primops. As a result, pure validators (parsers returning `()`) in `flatparse` are not difficult to implement with zero heap allocation. * __No incremental parsing__, and __only strict `ByteString`__ is supported as input. However, it can be still useful to convert from `Text`, `String` or other types to `ByteString`, and then use `flatparse` for parsing, since `flatparse` performance usually more than makes up for the conversion costs.-* __Only little-endian 64 bit systems are currently supported as the host machine__. This may change in the future. Getting good performance requires architecture-specific optimizations; I've only considered the most common setting at this point. However, `flatparse` does include primitive integer parsers with specific endianness.+* __Only little-endian systems are currently supported as the host machine__. This may change in the future. However, `flatparse` does include primitive integer parsers with specific endianness. * __Support for fast source location handling, indentation parsing and informative error messages__. `flatparse` provides a low-level interface to these. Batteries are _not included_, but it should be possible for users to build custom solutions, which are more sophisticated, but still as fast as possible. In my experience, the included batteries in other libraries often come with major unavoidable overheads, and often we still have to extend existing machinery in order to scale to production features. * The __backtracking model__ of `flatparse` is different to parsec libraries, and is more close to the [nom](https://github.com/Geal/nom) library in Rust. The idea is that _parser failure_ is distinguished from _parsing error_. The former is used for control flow, and we can backtrack from it. The latter is used for unrecoverable errors, and by default it's propagated to the top. `flatparse` does not track whether parsers have consumed inputs. In my experience, what we really care about is the failure/error distinction, and in `parsec` or `megaparsec` the consumed/non-consumed separation is often muddled and discarded in larger parser implementations. By default, basic `flatparse` parsers can fail but can not throw errors, with the exception of the specifically error-throwing operations. Hence, `flatparse` users have to be mindful about grammar, and explicitly insert errors where it is known that the input can't be valid. `flatparse` comes in two flavors: [`FlatParse.Basic`][basic] and [`FlatParse.Stateful`][stateful]. Both support a custom error type. Also, both come in three modes, where we can respectively run `IO` actions, `ST` actions, or no side effects. The modes are selected by a state token type parameter on the parser types. -* [`FlatParse.Basic`][basic] only supports the above features. If you don't need indentation- parsing, this is sufficient.-* [`FlatParse.Stateful`][stateful] additionally supports a built-in `Int` worth of internal state- and an additional custom reader environment. This can support a wide range of indentation parsing- features. There is a slight overhead in performance and code size compared to `Basic`. However, in- small parsers and microbenchmarks the difference between `Basic` and `Stateful` is often reduced- to near zero by GHC and/or LLVM optimization.+* [`FlatParse.Basic`][basic] only supports the above features. If you don't need+ indentation parsing, this is sufficient.+* [`FlatParse.Stateful`][stateful] additionally supports a built-in `Int` worth+ of internal state and an additional custom reader environment. This can+ support a wide range of indentation parsing features. There is a moderate+ overhead in performance and code size compared to `Basic`. In microbenchmarks+ and small parsers, the performance difference between `Basic` and `Stateful`+ is more up to the whims of GHC and LLVM, and is a bit more "random". ## Tutorial @@ -45,36 +46,36 @@ ## Some benchmarks Execution times below. See source code in [bench](bench). Compiled with GHC-9.4.4 `-O2 -fllvm`. Executed on Intel 1165G7 CPU at 28W power draw. Uses-`nightly-2023-02-06` Stackage snapshot for the involved packages.+9.8.3. `-O2 -fllvm` with `flatparse-0.5.2.1`. Executed on Intel 1345U CPU. Uses+`nightly-2024-11-11` Stackage snapshot for the involved packages. | benchmark | runtime | |-----------------------------|--------------|sexp/fpbasic | 1.93 ms |-|sexp/fpstateful | 2.00 ms |-|sexp/attoparsec | 21.82 ms |-|sexp/megaparsec | 59.60 ms |-|sexp/parsec | 79.81 ms |-|long keyword/fpbasic | 0.1 ms |-|long keyword/fpstateful | 0.1 ms |-|long keyword/attoparsec | 2.43 ms |-|long keyword/megaparsec | 5.2 ms |-|long keyword/parsec | 10.02 ms |-|numeral csv/fpbasic | 0.72 ms |-|numeral csv/fpstateful | 0.56 ms |-|numeral csv/attoparsec | 10.52 ms |-|numeral csv/megaparsec | 19.77 ms |-|numeral csv/parsec | 26.46 ms |+|sexp/fpbasic | 3.262 ms |+|sexp/fpstateful | 2.523 ms |+|sexp/attoparsec | 15.28 ms |+|sexp/megaparsec | 36.03 ms |+|sexp/parsec | 67.16 ms |+|long keyword/fpbasic | 0.079 ms |+|long keyword/fpstateful | 0.078 ms |+|long keyword/attoparsec | 0.705 ms |+|long keyword/megaparsec | 2.014 ms |+|long keyword/parsec | 8.813 ms |+|numeral csv/fpbasic | 0.482 ms |+|numeral csv/fpstateful | 0.580 ms |+|numeral csv/attoparsec | 4.661 ms |+|numeral csv/megaparsec | 7.415 ms |+|numeral csv/parsec | 24.54 ms | Object file sizes for each module containing the `s-exp`, `long keyword` and `numeral csv` benchmarks. | library | object file size (bytes) | | ------- | ------------------------ |-| fpbasic | 20656 |-| fpstateful | 26664 |-| attoparsec | 69384 |-| megaparsec | 226232 |-| parsec | 117696 |+| fpbasic | 26704 |+| fpstateful | 31064 |+| attoparsec | 91216 |+| megaparsec | 219712 |+| parsec | 113152 | [basic]: https://hackage.haskell.org/package/flatparse/docs/FlatParse-Basic.html [stateful]: https://hackage.haskell.org/package/flatparse/docs/FlatParse-Stateful.html
bench/Attoparsec.hs view
@@ -7,11 +7,14 @@ isLatinLetter :: Char -> Bool isLatinLetter c = ('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z') +skipWhile1 :: (Char -> Bool) -> Parser ()+skipWhile1 pred = satisfy pred *> skipWhile pred+ ws, open, close, ident, sexp :: Parser ()-ws = skipMany (satisfy \c -> c == ' ' || c == '\n')+ws = skipWhile (\c -> c == ' ' || c == '\n') open = char '(' >> ws close = char ')' >> ws-ident = skipMany1 (satisfy isLatinLetter) <* ws+ident = skipWhile1 isLatinLetter <* ws sexp = (open *> skipMany1 sexp <* close) <|> ident runSexp = parseOnly sexp @@ -21,7 +24,7 @@ runLongws = parseOnly longws numeral, comma, numcsv :: Parser ()-numeral = skipMany1 (satisfy \c -> '0' <= c && c <= '9') >> ws+numeral = skipWhile1 (\c -> '0' <= c && c <= '9') >> ws comma = char ',' >> ws numcsv = numeral >> skipMany1 (comma >> numeral) >> endOfInput runNumcsv = parseOnly numcsv
bench/Bench.hs view
@@ -3,7 +3,7 @@ module Main where import Data.Primitive.ByteArray-import Gauge+import Test.Tasty.Bench import qualified Data.ByteString.Char8 as B
bench/Megaparsec.hs view
@@ -14,14 +14,17 @@ char8 :: Char -> Parser () char8 c = () <$ single (fromIntegral (ord c)) -satisfy8 :: (Char -> Bool) -> Parser ()-satisfy8 f = () <$ satisfy (f . chr . fromIntegral)+skipWhile :: (Char -> Bool) -> Parser ()+skipWhile f = () <$ takeWhileP Nothing (f . chr . fromIntegral) +skipWhile1 :: (Char -> Bool) -> Parser ()+skipWhile1 f = () <$ takeWhile1P Nothing (f . chr . fromIntegral)+ ws, open, close, ident, sexp :: Parser ()-ws = skipMany (satisfy8 \c -> c == ' ' || c == '\n')+ws = skipWhile (\c -> c == ' ' || c == '\n') open = char8 '(' >> ws close = char8 ')' >> ws-ident = skipSome (satisfy8 isLatinLetter) <* ws+ident = skipWhile1 isLatinLetter <* ws sexp = (open *> skipSome sexp <* close) <|> ident runSexp = runParser sexp "" @@ -31,7 +34,7 @@ runLongws = runParser longws "" numeral, comma, numcsv :: Parser ()-numeral = skipSome (satisfy8 \c -> '0' <= c && c <= '9') >> ws+numeral = skipWhile1 (\c -> '0' <= c && c <= '9') >> ws comma = single (fromIntegral (ord ',')) >> ws numcsv = numeral >> skipSome (comma >> numeral) >> eof runNumcsv = runParser numcsv ""
flatparse.cabal view
@@ -1,11 +1,11 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.37.0.+-- This file has been generated from package.yaml by hpack version 0.38.1. -- -- see: https://github.com/sol/hpack name: flatparse-version: 0.5.2.1+version: 0.5.3.0 synopsis: High-performance parsing from strict bytestrings description: @Flatparse@ is a high-performance parsing library for strict bytestring input. See the README for more information: <https://github.com/AndrasKovacs/flatparse>.@@ -23,10 +23,10 @@ , GHC == 8.8.4 , GHC == 8.10.7 , GHC == 9.0.2- , GHC == 9.2.5- , GHC == 9.4.4- , GHC == 9.6.6- , GHC == 9.8.3+ , GHC == 9.2.8+ , GHC == 9.4.8+ , GHC == 9.6.7+ , GHC == 9.8.4 extra-source-files: README.md @@ -164,11 +164,11 @@ , base >=4.7 && <5 , bytestring , flatparse- , gauge , integer-gmp , megaparsec , parsec , primitive+ , tasty-bench , utf8-string >=1.0.2 && <1.1 default-language: Haskell2010 if flag(dump)
src/FlatParse/Basic.hs view
@@ -184,6 +184,7 @@ import qualified Control.Applicative import GHC.IO (IO(..), unsafeIOToST)+import GHC.Int import GHC.Exts import GHC.ForeignPtr import GHC.ST (ST(..))@@ -506,12 +507,16 @@ _ -> -- >= 8 bytes of input: use efficient 8-byte scanning #if defined(WORDS_BIGENDIAN) -- big-endian ("L->R"): find leftmost null byte- let !x@(I# x#) = Common.zbytel'intermediate (I# (indexIntOffAddr# s 0#)) in+ let !x@(I64# x#) = Common.zbytel'intermediate (I64# (indexInt64OffAddr# s 0#)) in #else -- little-endian ("R->L"): find rightmost null byte- let !x@(I# x#) = Common.zbyter'intermediate (I# (indexIntOffAddr# s 0#)) in+ let !x@(I64# x#) = Common.zbyter'intermediate (I64# (indexInt64OffAddr# s 0#)) in #endif+#if MIN_VERSION_base(4,17,0)+ case eqInt64# x# (intToInt64# 0#) of+#else case x# ==# 0# of+#endif 1# -> go fp eob s0 st sWord -- no 0x00 in next word _ -> -- 0x00 somewhere in next word #if defined(WORDS_BIGENDIAN)@@ -578,7 +583,7 @@ case Common.anyVarintProtobuf# eob s of (# (##) | #) -> Fail# st (# | (# w#, s#, bits# #) #) ->- case bits# ># 63# of+ case bits# ># (WORD_SIZE_IN_BITS# -# 1#) of 0# -> OK# st (I# w#) s# _ -> Fail# st -- overflow {-# inline anyVarintProtobuf #-}
src/FlatParse/Basic/Bytes.hs view
@@ -14,6 +14,7 @@ import qualified FlatParse.Common.Assorted as Common import Language.Haskell.TH import GHC.Exts+import GHC.Word -- | Read a sequence of bytes. This is a template function, you can use it as @$(bytes [3, 4, 5])@, -- for example, and the splice has type @Parser e ()@. For a non-TH variant see 'FlatParse.Basic.byteString'.@@ -28,7 +29,7 @@ -- The caller must guarantee that the input has enough bytes. bytesUnsafe :: [Word] -> Q Exp bytesUnsafe bytes = do- let !(leading, w8s) = Common.splitBytes bytes+ let !(leading, w8s) = Common.splitBytes $ (fromIntegral :: Word -> Word64) <$> bytes !scanw8s = go w8s where go (w8:[] ) = [| word64Unsafe w8 |] go (w8:w8s) = [| word64Unsafe w8 >> $(go w8s) |]@@ -52,12 +53,16 @@ !l = length ws in [| scanPartial64# l w >> $scanw8s |] -scanPartial64# :: Int -> Word -> ParserT st e ()-scanPartial64# (I# len) (W# w) = ParserT \fp eob s st ->- case indexWordOffAddr# s 0# of+scanPartial64# :: Int -> Word64 -> ParserT st e ()+scanPartial64# (I# len) (W64# w) = ParserT \fp eob s st ->+ case indexWord64OffAddr# s 0# of w' -> case uncheckedIShiftL# (8# -# len) 3# of- sh -> case uncheckedShiftL# w' sh of- w' -> case uncheckedShiftRL# w' sh of+ sh -> case uncheckedShiftL64# w' sh of+ w' -> case uncheckedShiftRL64# w' sh of+#if MIN_VERSION_base(4,17,0)+ w' -> case eqWord64# w w' of+#else w' -> case eqWord# w w' of+#endif 1# -> OK# st () (plusAddr# s len) _ -> Fail# st
src/FlatParse/Basic/Integers.hs view
@@ -125,22 +125,20 @@ withAnyInt64 = withAnySized# 8# (\a i -> I64# (indexInt64OffAddr# a i)) {-# inline withAnyInt64 #-} --- TODO assumes 64-bit platform -- | Parse any 'Word' (native size) (CPS). withAnyWord :: (Word -> ParserT st e r) -> ParserT st e r withAnyWord p = ParserT \fp eob buf st -> case 8# <=# minusAddr# eob buf of 0# -> Fail# st _ -> let w# = indexWordOffAddr# buf 0#- in runParserT# (p (W# w#)) fp eob (plusAddr# buf 8#) st+ in runParserT# (p (W# w#)) fp eob (plusAddr# buf SIZEOF_HSWORD#) st {-# inline withAnyWord #-} --- -- TODO assumes 64-bit platform -- | Parse any 'Int' (native size) (CPS). withAnyInt :: (Int -> ParserT st e r) -> ParserT st e r withAnyInt p = ParserT \fp eob buf st -> case 8# <=# minusAddr# eob buf of 0# -> Fail# st _ -> let i# = indexIntOffAddr# buf 0#- in runParserT# (p (I# i#)) fp eob (plusAddr# buf 8#) st+ in runParserT# (p (I# i#)) fp eob (plusAddr# buf SIZEOF_HSWORD#) st {-# inline withAnyInt #-} --------------------------------------------------------------------------------@@ -185,13 +183,11 @@ anyInt64 = withAnyInt64 pure {-# inline anyInt64 #-} --- TODO 'withAnyWord' assumes 64-bit platform -- | Parse any 'Word' (native size). anyWord :: ParserT st e Word anyWord = withAnyWord pure {-# inline anyWord #-} --- TODO 'withAnyInt' assumes 64-bit platform -- | Parse any 'Int' (native size). anyInt :: ParserT st e Int anyInt = withAnyInt pure
src/FlatParse/Common/Assorted.hs view
@@ -82,13 +82,13 @@ -- UTF conversions -------------------------------------------------------------------------------- -packBytes :: [Word] -> Word+packBytes :: [Word64] -> Word64 packBytes = fst . foldl' go (0, 0) where go (acc, shift) w | shift == 64 = error "packBytes: too many bytes" go (acc, shift) w = (unsafeShiftL (fromIntegral w) shift .|. acc, shift+8) -- TODO chunks into 8-bytes for 64-bit performance-splitBytes :: [Word] -> ([Word], [Word])+splitBytes :: [Word64] -> ([Word64], [Word64]) splitBytes ws = case quotRem (length ws) 8 of (0, _) -> (ws, []) (_, r) -> (as, chunk8s bs) where
src/FlatParse/Common/Numbers.hs view
@@ -3,6 +3,7 @@ module FlatParse.Common.Numbers where import FlatParse.Common.Assorted ( shortInteger )+import Language.Haskell.TH.Syntax (lift) import GHC.Exts import GHC.ForeignPtr@@ -68,12 +69,16 @@ (# n, s' #) | 1# <- eqAddr# s s' -> (# (##) | #) - -- Simple heuristic, 18 digits correspond to somewhere between 2^59 and 2^60, which is- -- well inside the 'IS' constructor.- | 1# <- minusAddr# s' s <=# 18# -> (# | (# shortInteger n, s' #) #)+ -- Simple heuristic, using the largest number of digits that can be in an+ -- 'Int#', such that we can use the 'IS' constructor.+ | 1# <- minusAddr# s' s <=# maxDigitsInt -> (# | (# shortInteger n, s' #) #) | otherwise -> case BC8.readInteger (B.PS (ForeignPtr s fp) 0 (I# (minusAddr# s' s))) of Nothing -> (# (##) | #) Just (i, _) -> (# | (# i, s' #) #)+ where+ maxDigitsInt :: Int#+ !(I# maxDigitsInt) = $(let p e = 10 ^ e - 1 <= toInteger (maxBound :: Int)+ in lift $ last $ takeWhile p [0 :: Int ..]) {-# inline anyAsciiDecimalInteger# #-} -- | Parse a non-empty ASCII decimal digit sequence as a positive 'Int'.
src/FlatParse/Stateful.hs view
@@ -190,6 +190,7 @@ import qualified Control.Applicative import GHC.IO (IO(..), unsafeIOToST)+import GHC.Int import GHC.Exts import GHC.ForeignPtr import GHC.ST (ST(..))@@ -483,12 +484,16 @@ _ -> -- >= 8 bytes of input: use efficient 8-byte scanning #if defined(WORDS_BIGENDIAN) -- big-endian ("L->R"): find leftmost null byte- let !x@(I# x#) = Common.zbytel'intermediate (I# (indexIntOffAddr# s 0#)) in+ let !x@(I64# x#) = Common.zbytel'intermediate (I64# (indexInt64OffAddr# s 0#)) in #else -- little-endian ("R->L"): find rightmost null byte- let !x@(I# x#) = Common.zbyter'intermediate (I# (indexIntOffAddr# s 0#)) in+ let !x@(I64# x#) = Common.zbyter'intermediate (I64# (indexInt64OffAddr# s 0#)) in #endif+#if MIN_VERSION_base(4,17,0)+ case eqInt64# x# (intToInt64# 0#) of+#else case x# ==# 0# of+#endif 1# -> go fp r n eob s0 st sWord -- no 0x00 in next word _ -> -- 0x00 somewhere in next word #if defined(WORDS_BIGENDIAN)@@ -555,7 +560,7 @@ case Common.anyVarintProtobuf# eob s of (# (##) | #) -> Fail# st (# | (# w#, s#, bits# #) #) ->- case bits# ># 63# of+ case bits# ># (WORD_SIZE_IN_BITS# -# 1#) of 0# -> OK# st (I# w#) s# n _ -> Fail# st -- overflow {-# inline anyVarintProtobuf #-}
src/FlatParse/Stateful/Bytes.hs view
@@ -14,6 +14,7 @@ import qualified FlatParse.Common.Assorted as Common import Language.Haskell.TH import GHC.Exts+import GHC.Word -- | Read a sequence of bytes. This is a template function, you can use it as -- @$(bytes [3, 4, 5])@, for example, and the splice has type @Parser e@@ -29,7 +30,7 @@ -- The caller must guarantee that the input has enough bytes. bytesUnsafe :: [Word] -> Q Exp bytesUnsafe bytes = do- let !(leading, w8s) = Common.splitBytes bytes+ let !(leading, w8s) = Common.splitBytes $ (fromIntegral :: Word -> Word64) <$> bytes !scanw8s = go w8s where go (w8:[] ) = [| word64Unsafe w8 |] go (w8:w8s) = [| word64Unsafe w8 >> $(go w8s) |]@@ -53,12 +54,16 @@ !l = length ws in [| scanPartial64# l w >> $scanw8s |] -scanPartial64# :: Int -> Word -> ParserT st r e ()-scanPartial64# (I# len) (W# w) = ParserT \fp !r eob s n st ->- case indexWordOffAddr# s 0# of+scanPartial64# :: Int -> Word64 -> ParserT st r e ()+scanPartial64# (I# len) (W64# w) = ParserT \fp !r eob s n st ->+ case indexWord64OffAddr# s 0# of w' -> case uncheckedIShiftL# (8# -# len) 3# of- sh -> case uncheckedShiftL# w' sh of- w' -> case uncheckedShiftRL# w' sh of+ sh -> case uncheckedShiftL64# w' sh of+ w' -> case uncheckedShiftRL64# w' sh of+#if MIN_VERSION_base(4,17,0)+ w' -> case eqWord64# w w' of+#else w' -> case eqWord# w w' of+#endif 1# -> OK# st () (plusAddr# s len) n _ -> Fail# st
src/FlatParse/Stateful/Integers.hs view
@@ -127,22 +127,20 @@ withAnyInt64 = withAnySized# 8# (\a i -> I64# (indexInt64OffAddr# a i)) {-# inline withAnyInt64 #-} --- TODO assumes 64-bit platform -- | Parse any 'Word' (native size) (CPS). withAnyWord :: (Word -> ParserT st r e ret) -> ParserT st r e ret withAnyWord p = ParserT \fp !r eob buf n st -> case 8# <=# minusAddr# eob buf of 0# -> Fail# st _ -> let w# = indexWordOffAddr# buf 0#- in runParserT# (p (W# w#)) fp r eob (plusAddr# buf 8#) n st+ in runParserT# (p (W# w#)) fp r eob (plusAddr# buf SIZEOF_HSWORD#) n st {-# inline withAnyWord #-} --- TODO assumes 64-bit platform -- | Parse any 'Int' (native size) (CPS). withAnyInt :: (Int -> ParserT st r e ret) -> ParserT st r e ret withAnyInt p = ParserT \fp !r eob buf n st -> case 8# <=# minusAddr# eob buf of 0# -> Fail# st _ -> let i# = indexIntOffAddr# buf 0#- in runParserT# (p (I# i#)) fp r eob (plusAddr# buf 8#) n st+ in runParserT# (p (I# i#)) fp r eob (plusAddr# buf SIZEOF_HSWORD#) n st {-# inline withAnyInt #-} --------------------------------------------------------------------------------@@ -187,13 +185,11 @@ anyInt64 = withAnyInt64 pure {-# inline anyInt64 #-} --- TODO 'withAnyWord' assumes 64-bit platform -- | Parse any 'Word' (native size). anyWord :: ParserT st r e Word anyWord = withAnyWord pure {-# inline anyWord #-} --- TODO 'withAnyInt' assumes 64-bit platform -- | Parse any 'Int' (native size). anyInt :: ParserT st r e Int anyInt = withAnyInt pure
test/Test.hs view
@@ -20,6 +20,8 @@ import qualified Data.ByteString.UTF8 as UTF8 +#include "MachDeps.h"+ main :: IO () main = hspec $ do basicSpec@@ -467,10 +469,12 @@ FB.anyVarintProtobuf `shouldParseWith` (B.pack [0b10000000, 0b00000001], 128) FB.anyVarintProtobuf `shouldParseWith` (B.pack [0b10010110, 0b00000001], 150) it "fails on overlong varint" $ do- -- 7 bits per byte = max 9 bytes in 64-bit word- let bs n = B.replicate n 0b10101010- FB.anyVarintProtobuf `shouldParse` B.snoc (bs 8) 0b01010101- FB.anyVarintProtobuf `shouldParseFail` B.snoc (bs 9) 0b01010101+ -- Variant has 7 bits payload per byte, so 'maxVarintBytesPerWord' gives+ -- the max number of bytes we can parse into a (word-size) 'Int'.+ let maxVarintBytesPerWord = WORD_SIZE_IN_BITS `div` 7+ bs n = B.replicate n 0b10101010+ FB.anyVarintProtobuf `shouldParse` B.snoc (bs (maxVarintBytesPerWord - 1)) 0b01010101+ FB.anyVarintProtobuf `shouldParseFail` B.snoc (bs maxVarintBytesPerWord) 0b01010101 describe "anyCString" $ do prop "parses arbitrary null-terminated bytestrings" $