bidispec-0.1.3: Specification of generators and parsers

Data.BidiSpec

Documentation

data Spec err src tgt a Source

type SpecGen tgt a = tgt -> a -> tgtSource

newtype SpecParser s e a Source

Constructors

SpecParser 

Fields

unSpecParser :: ReaderT s (Either e) a
 

Instances

mkSpec :: SpecParser i e a -> SpecGen o a -> Spec e i o aSource

parseBySpec :: MonadError e m => Spec e i o a -> i -> m aSource

genBySpec :: Monad m => Spec e i o a -> o -> a -> m oSource

rsGen :: Spec err src tgt a -> SpecGen tgt aSource

rsParse :: Spec err src tgt a -> SpecParser src err aSource

spGets :: Error e => (s -> a) -> SpecParser s e aSource

spCheck :: Error e => (a -> Bool) -> (a -> e) -> a -> SpecParser s e ()Source

spFromMaybe :: Error e => e -> Maybe a -> SpecParser s e aSource

rsPair :: Error e => Spec e i o a -> Spec e i o b -> Spec e i o (a, b)Source

rsTriple :: Error e => Spec e i o a -> Spec e i o b -> Spec e i o c -> Spec e i o (a, b, c)Source

rsQuadruple :: Error e => Spec e i o a -> Spec e i o b -> Spec e i o c -> Spec e i o d -> Spec e i o (a, b, c, d)Source

rsMaybe :: Error e => Spec e i o a -> Spec e i o (Maybe a)Source

rsWrap :: Error e => (a -> b, b -> a) -> Spec e i o a -> Spec e i o bSource

rsWrapMaybe :: Error e => String -> (a -> Maybe b, b -> a) -> Spec e i o a -> Spec e i o bSource

rsWrapEither :: Error e => (a -> Either e b, b -> a) -> Spec e i o a -> Spec e i o bSource

rsWrapEither' :: (Show l, Error e) => (a -> Either l b, b -> a) -> Spec e i o a -> Spec e i o bSource

rsCondSeq :: Error e => Spec e i o b -> (b -> a) -> Spec e i o a -> (a -> Spec e i o b) -> Spec e i o bSource

rsChoice :: Error e => Spec e i o b -> Spec e i o a -> (a -> Spec e i o b) -> Spec e i o bSource

rsAlt :: Error e => (a -> Int) -> [Spec e i o a] -> Spec e i o aSource

rsTagSwitch :: (Error e, Eq t) => (a -> t) -> [SpecCase e i o a] -> Spec e i o aSource

rsSwitch :: (Error e, Show a) => [SpecCase e i o a] -> Spec e i o aSource

rsCase :: Error e => (a -> b, b -> a) -> Spec e i o a -> SpecCase e i o bSource

rsCaseConst :: Error e => a -> (Spec e i o b -> Spec e i o b) -> SpecCase e i o aSource

rsGetSet :: Error e => (i -> a) -> (o -> a -> o) -> Spec e i o aSource

rsCheckSet :: Error e => SpecParser i e () -> (o -> o) -> Spec e i o a -> Spec e i o aSource

rsLift :: Error e => a -> Spec e i o aSource

rsUnit :: Error e => Spec e i o ()Source

rsZero :: Error e => Spec e i o aSource

rsWith :: (Spec e i o a -> Spec e i o b) -> Spec e i o a -> Spec e i o bSource

rsDefault :: Error e => (e -> a) -> Spec e u i a -> Spec e u i aSource

rsMaybeDefault :: Error e => a -> Spec e i o a -> Spec e i o aSource