tickle-0.0.1: A port of @Data.Binary@

Safe HaskellSafe
LanguageHaskell2010

Data.Tickle.IsolateError

Contents

Synopsis

Data type

data IsolateError e Source

Instances

Functor IsolateError

Map a function on the possible failure.

>>> fmap (+1) (_NegativeSize # () :: IsolateError Int)
NegativeSize
>>> fmap reverse (_IsolateXFail # "abc")
IsolateXFail "cba"
>>> fmap (+1) (_UnexpectedConsumed # (7, 8) :: IsolateError Int)
UnexpectedConsumed 7 8
Extend IsolateError

Duplicate on the possible failure.

>>> extended (isolateError 12 (+10) (*)) (_IsolateXFail # 99)
IsolateXFail 109
>>> extended (isolateError 12 (+10) (*)) (_UnexpectedConsumed # (12, 13))
UnexpectedConsumed 12 13
>>> extended (isolateError 12 (+10) (*)) (_NegativeSize # ())
NegativeSize
Eq e => Eq (IsolateError e) 
Ord e => Ord (IsolateError e) 
Show e => Show (IsolateError e) 

Reduction

isolateError :: a -> (e -> a) -> (Int -> Int -> a) -> IsolateError e -> a Source

>>> isolateError 7 (\_ -> 8) (\_ _ -> 9) (_NegativeSize # ())
7
>>> isolateError 7 (+10) (\_ _ -> 9) (_IsolateXFail # 99)
109
>>> isolateError 7 (\_ -> 8) (+) (_UnexpectedConsumed # (12, 14))
26

Prisms

_NegativeSize :: Prism' (IsolateError e) () Source

>>> _NegativeSize # ()
NegativeSize
>>> (_NegativeSize # ()) ^? _NegativeSize
Just ()
>>> (_IsolateXFail # 8) ^? _NegativeSize
Nothing
>>> (_UnexpectedConsumed # (12, 13)) ^? _NegativeSize
Nothing

_IsolateXFail :: Prism' (IsolateError e) e Source

>>> _IsolateXFail # 8
IsolateXFail 8
>>> (_NegativeSize # ()) ^? _IsolateXFail
Nothing
>>> (_IsolateXFail # 8) ^? _IsolateXFail
Just 8
>>> (_UnexpectedConsumed # (12, 13)) ^? _IsolateXFail
Nothing

_UnexpectedConsumed :: Prism' (IsolateError e) (Int, Int) Source

>>> _UnexpectedConsumed # (12,13)
UnexpectedConsumed 12 13
>>> (_NegativeSize # ()) ^? _UnexpectedConsumed
Nothing
>>> (_IsolateXFail # 8) ^? _UnexpectedConsumed
Nothing
>>> (_UnexpectedConsumed # (12, 13)) ^? _UnexpectedConsumed
Just (12,13)