bytesmith-0.3.9.1: Nonresumable byte parser
Safe HaskellSafe-Inferred
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 LiftedRep Source # 
Instance details

Defined in Data.Bytes.Parser.Rebindable

Methods

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

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

Bind LiftedRep 'IntRep Source # 
Instance details

Defined in Data.Bytes.Parser.Rebindable

Methods

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

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

Bind LiftedRep LiftedRep Source # 
Instance details

Defined in Data.Bytes.Parser.Rebindable

Methods

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

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

Bind 'WordRep LiftedRep Source # 
Instance details

Defined in Data.Bytes.Parser.Rebindable

Methods

(>>=) :: forall e s (a :: TYPE 'WordRep) (b :: TYPE LiftedRep). Parser e s a -> (a -> Parser e s b) -> Parser e s b Source #

(>>) :: forall e s (a :: TYPE 'WordRep) (b :: TYPE LiftedRep). Parser e s a -> Parser e s b -> Parser e s b Source #

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 LiftedRep ('TupleRep '['IntRep, 'IntRep, 'IntRep, 'IntRep, 'IntRep]) Source # 
Instance details

Defined in Data.Bytes.Parser.Rebindable

Methods

(>>=) :: forall e s (a :: TYPE LiftedRep) (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 LiftedRep) (b :: TYPE ('TupleRep '['IntRep, 'IntRep, 'IntRep, 'IntRep, 'IntRep])). Parser e s a -> Parser e s b -> Parser e s b Source #

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

Defined in Data.Bytes.Parser.Rebindable

Methods

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

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

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

Defined in Data.Bytes.Parser.Rebindable

Methods

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

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

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

Defined in Data.Bytes.Parser.Rebindable

Methods

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

(>>) :: forall e s (a :: TYPE ('TupleRep '['IntRep, 'IntRep])) (b :: TYPE LiftedRep). 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 LiftedRep Source # 
Instance details

Defined in Data.Bytes.Parser.Rebindable

Methods

pure :: forall e s (a :: TYPE LiftedRep). 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 #