railroad
Safe HaskellNone
LanguageGHC2021

Railroad

Synopsis

Documentation

type family CErr f where ... Source #

Equations

CErr Bool = () 
CErr (Maybe a) = () 
CErr (Either e a) = e 
CErr (Validation e a) = e 
CErr (t a) = CErr a 

type family CRes f where ... Source #

Equations

CRes Bool = () 
CRes (Maybe a) = a 
CRes (Either e a) = a 
CRes (Validation e a) = a 
CRes (t a) = t (CRes a) 

class Bifurcate f where Source #

A catamorphism to Either

Methods

bifurcate :: f -> Either (CErr f) (CRes f) Source #

Instances

Instances details
Bifurcate Bool Source # 
Instance details

Defined in Railroad

Bifurcate (Maybe a) Source # 
Instance details

Defined in Railroad

Methods

bifurcate :: Maybe a -> Either (CErr (Maybe a)) (CRes (Maybe a)) Source #

(Traversable t, CErr (t (Either e a)) ~ e, CRes (t (Either e a)) ~ t a) => Bifurcate (t (Either e a)) Source # 
Instance details

Defined in Railroad

Methods

bifurcate :: t (Either e a) -> Either (CErr (t (Either e a))) (CRes (t (Either e a))) Source #

(Traversable t, Semigroup e, CErr (t (Validation e a)) ~ e, CRes (t (Validation e a)) ~ t a) => Bifurcate (t (Validation e a)) Source # 
Instance details

Defined in Railroad

Methods

bifurcate :: t (Validation e a) -> Either (CErr (t (Validation e a))) (CRes (t (Validation e a))) Source #

(Traversable t, CErr (t (Maybe a)) ~ (), CRes (t (Maybe a)) ~ t a) => Bifurcate (t (Maybe a)) Source # 
Instance details

Defined in Railroad

Methods

bifurcate :: t (Maybe a) -> Either (CErr (t (Maybe a))) (CRes (t (Maybe a))) Source #

(Traversable t, CErr (t Bool) ~ (), CRes (t Bool) ~ t ()) => Bifurcate (t Bool) Source # 
Instance details

Defined in Railroad

Methods

bifurcate :: t Bool -> Either (CErr (t Bool)) (CRes (t Bool)) Source #

Bifurcate (Either e a) Source # 
Instance details

Defined in Railroad

Methods

bifurcate :: Either e a -> Either (CErr (Either e a)) (CRes (Either e a)) Source #

Bifurcate (Validation e a) Source # 
Instance details

Defined in Railroad

Methods

bifurcate :: Validation e a -> Either (CErr (Validation e a)) (CRes (Validation e a)) Source #

collapse :: forall e (es :: [Effect]) f. (Error e :> es, Bifurcate f) => (CErr f -> e) -> f -> Eff es (CRes f) Source #

Collapses a structure into its inner type or an effectful error

(??) :: forall a (es :: [Effect]) e. (Error e :> es, Bifurcate a) => Eff es a -> (CErr a -> e) -> Eff es (CRes a) infixl 0 Source #

Collapses a structure using an error mapper.

(?) :: forall (es :: [Effect]) e a. (Error e :> es, Bifurcate a) => Eff es a -> e -> Eff es (CRes a) infixl 0 Source #

Collapses a structure using a constant error.

(?>) :: forall (es :: [Effect]) e a. Error e :> es => Eff es a -> (a -> Bool) -> (a -> e) -> Eff es a infixl 1 Source #

Collapses any value based on a predicate

(??~) :: forall (es :: [Effect]) a. Bifurcate a => Eff es a -> (CErr a -> CRes a) -> Eff es (CRes a) Source #

Collapses a structure and recovers to a value dependent on the error

(?~) :: forall (es :: [Effect]) a. Bifurcate a => Eff es a -> CRes a -> Eff es (CRes a) infixl 0 Source #

Collapses a structure, and recovers to a constant default value in the error case

data CardinalityError ta Source #

Constructors

IsEmpty 
TooMany !ta 

cardinalityErr :: e -> (ta -> e) -> CardinalityError ta -> e Source #

Catamorphism for CardinalityError

(?+) :: forall (es :: [Effect]) e t a. (Error e :> es, Foldable t) => Eff es (t a) -> e -> Eff es (t a) infixl 0 Source #

Non-empty is sucess state. Returns the collection as-is.

(?!) :: forall (es :: [Effect]) e t a. (Error e :> es, Foldable t) => Eff es (t a) -> (CardinalityError (t a) -> e) -> Eff es a infixl 0 Source #

Single element is sucess state. Returns the single element

(?∅) :: forall (es :: [Effect]) e t a. (Error e :> es, Foldable t) => Eff es (t a) -> (t a -> e) -> Eff es () infixl 0 Source #

Empty is success state. Returns Unit.