bytesmith-0.3.9.0: Nonresumable byte parser
Safe HaskellNone
LanguageHaskell2010

Data.Bytes.Parser.Rebindable

Description

Provides levity-polymorphic variants of >>=, >>, and pure used to assemble parsers whose result types are unlifted. This cannot be used with the RebindableSyntax extension because that extension disallows representations other than LiftedRep. Consequently, users of this module must manually desugar do notation. See the url-bytes library for an example of this module in action.

Only resort to the functions in this module after checking that GHC is unable to optimize away I# and friends in your code.

Documentation

class Bind (ra :: RuntimeRep) (rb :: RuntimeRep) where Source #

Methods

(>>=) :: forall e s (a :: TYPE ra) (b :: TYPE rb). Parser e s a -> (a -> Parser e s b) -> Parser e s b Source #

(>>) :: forall e s (a :: TYPE ra) (b :: TYPE rb). Parser e s a -> Parser e s b -> Parser e s b Source #

Instances

Instances details
Bind 'IntRep ('TupleRep '['IntRep, 'IntRep, 'IntRep, 'IntRep, 'IntRep]) Source # 
Instance details

Defined in Data.Bytes.Parser.Rebindable

Methods

(>>=) :: forall e s (a :: TYPE 'IntRep) (b :: TYPE ('TupleRep '['IntRep, 'IntRep, 'IntRep, 'IntRep, 'IntRep])). Parser e s a -> (a -> Parser e s b) -> Parser e s b Source #

(>>) :: forall e s (a :: TYPE 'IntRep) (b :: TYPE ('TupleRep '['IntRep, 'IntRep, 'IntRep, 'IntRep, 'IntRep])). Parser e s a -> Parser e s b -> Parser e s b Source #

Bind 'IntRep ('TupleRep '['IntRep, 'IntRep]) Source # 
Instance details

Defined in Data.Bytes.Parser.Rebindable

Methods

(>>=) :: forall e s (a :: TYPE 'IntRep) (b :: TYPE ('TupleRep '['IntRep, 'IntRep])). Parser e s a -> (a -> Parser e s b) -> Parser e s b Source #

(>>) :: forall e s (a :: TYPE 'IntRep) (b :: TYPE ('TupleRep '['IntRep, 'IntRep])). Parser e s a -> Parser e s b -> Parser e s b Source #

Bind ('TupleRep '['IntRep, 'IntRep]) ('TupleRep '['IntRep, 'IntRep, 'IntRep, 'IntRep, 'IntRep]) Source # 
Instance details

Defined in Data.Bytes.Parser.Rebindable

Methods

(>>=) :: forall e s (a :: TYPE ('TupleRep '['IntRep, 'IntRep])) (b :: TYPE ('TupleRep '['IntRep, 'IntRep, 'IntRep, 'IntRep, 'IntRep])). Parser e s a -> (a -> Parser e s b) -> Parser e s b Source #

(>>) :: forall e s (a :: TYPE ('TupleRep '['IntRep, 'IntRep])) (b :: TYPE ('TupleRep '['IntRep, 'IntRep, 'IntRep, 'IntRep, 'IntRep])). Parser e s a -> Parser e s b -> Parser e s b Source #

class Pure (ra :: RuntimeRep) where Source #

Methods

pure :: forall e s (a :: TYPE ra). a -> Parser e s a Source #

Instances

Instances details
Pure 'IntRep Source # 
Instance details

Defined in Data.Bytes.Parser.Rebindable

Methods

pure :: forall e s (a :: TYPE 'IntRep). a -> Parser e s a Source #

Pure ('TupleRep '['IntRep, 'IntRep, 'IntRep, 'IntRep, 'IntRep]) Source # 
Instance details

Defined in Data.Bytes.Parser.Rebindable

Methods

pure :: forall e s (a :: TYPE ('TupleRep '['IntRep, 'IntRep, 'IntRep, 'IntRep, 'IntRep])). a -> Parser e s a Source #

Pure ('TupleRep '['IntRep, 'IntRep]) Source # 
Instance details

Defined in Data.Bytes.Parser.Rebindable

Methods

pure :: forall e s (a :: TYPE ('TupleRep '['IntRep, 'IntRep])). a -> Parser e s a Source #