bytesmith-0.3.8.0: Nonresumable byte parser
Safe HaskellNone
LanguageHaskell2010

Data.Bytes.Parser.Unsafe

Description

Everything in this module is unsafe and can lead to nondeterministic output or segfaults if used incorrectly.

Synopsis

Types

newtype Parser :: forall (r :: RuntimeRep). Type -> Type -> TYPE r -> Type where Source #

A non-resumable parser.

Constructors

Parser 

Fields

Instances

Instances details
Monad (Parser e s :: Type -> Type) Source # 
Instance details

Defined in Data.Bytes.Parser.Internal

Methods

(>>=) :: Parser e s a -> (a -> Parser e s b) -> Parser e s b #

(>>) :: Parser e s a -> Parser e s b -> Parser e s b #

return :: a -> Parser e s a #

Functor (Parser e s :: Type -> Type) Source # 
Instance details

Defined in Data.Bytes.Parser.Internal

Methods

fmap :: (a -> b) -> Parser e s a -> Parser e s b #

(<$) :: a -> Parser e s b -> Parser e s a #

Applicative (Parser e s :: Type -> Type) Source # 
Instance details

Defined in Data.Bytes.Parser.Internal

Methods

pure :: a -> Parser e s a #

(<*>) :: Parser e s (a -> b) -> Parser e s a -> Parser e s b #

liftA2 :: (a -> b -> c) -> Parser e s a -> Parser e s b -> Parser e s c #

(*>) :: Parser e s a -> Parser e s b -> Parser e s b #

(<*) :: Parser e s a -> Parser e s b -> Parser e s a #

Monoid e => Alternative (Parser e s :: Type -> Type) Source #

Combines the error messages using <> when both parsers fail.

Instance details

Defined in Data.Bytes.Parser.Internal

Methods

empty :: Parser e s a #

(<|>) :: Parser e s a -> Parser e s a -> Parser e s a #

some :: Parser e s a -> Parser e s [a] #

many :: Parser e s a -> Parser e s [a] #

Functions

cursor :: Parser e s Int Source #

Get the current offset into the chunk. Using this makes it possible to observe the internal difference between Bytes that refer to equivalent slices. Be careful.

cursor# :: Parser e s Int# Source #

Variant of cursor with unboxed result.

expose :: Parser e s ByteArray Source #

Return the byte array being parsed. This includes bytes that preceed the current offset and may include bytes that go beyond the length. This is somewhat dangerous, so only use this is you know what you're doing.

unconsume :: Int -> Parser e s () Source #

Move the cursor back by n bytes. Precondition: you must have previously consumed at least n bytes.

jump :: Int -> Parser e s () Source #

Set the position to the given index. Precondition: the index must be valid. It should be the result of an earlier call to cursor.

uneffectful :: (Bytes -> Result e a) -> Parser e s a Source #