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

Safe HaskellNone
LanguageHaskell2010

Data.Tickle.RunGetResult

Contents

Synopsis

Data type

data RunGetResult e a Source #

Instances

Bifunctor RunGetResult Source #
>>> bimap (+10) (*2) (_RunGet # 12)
RunGet 24
>>> bimap (+10) (*2) (_RunGetFail # (2, 3))
RunGetFail 2 13

Methods

bimap :: (a -> b) -> (c -> d) -> RunGetResult a c -> RunGetResult b d #

first :: (a -> b) -> RunGetResult a c -> RunGetResult b c #

second :: (b -> c) -> RunGetResult a b -> RunGetResult a c #

Bitraversable RunGetResult Source #
>>> bitraverse (\n -> if even n then [n - 1] else [n * 2]) (\n -> if n `mod` 5 == 0 then [n + 1] else [n * 7]) (_RunGet # 8)
[RunGet 56]
>>> bitraverse (\n -> if even n then [n - 1] else [n * 2]) (\n -> if n `mod` 5 == 0 then [n + 1] else [n * 7]) (_RunGet # 9)
[RunGet 63]
>>> bitraverse (\n -> if even n then [n - 1] else [n * 2]) (\n -> if n `mod` 5 == 0 then [n + 1] else [n * 7]) (_RunGet # 10)
[RunGet 11]

λ> bitraverse (n -> if even n then [n - 1] else [n * 2]) (n -> if n mod 5 == 0 then [n + 1] else [n * 7]) (_RunGetFail # (8, 18)) [RunGetFail 8 17]

>>> bitraverse (\n -> if even n then [n - 1] else [n * 2]) (\n -> if n `mod` 5 == 0 then [n + 1] else [n * 7]) (_RunGetFail # (8, 19))
[RunGetFail 8 38]
>>> bitraverse (\n -> if even n then [n - 1] else [n * 2]) (\n -> if n `mod` 5 == 0 then [n + 1] else [n * 7]) (_RunGetFail # (8, 20))
[RunGetFail 8 19]

Methods

bitraverse :: Applicative f => (a -> f c) -> (b -> f d) -> RunGetResult a b -> f (RunGetResult c d) #

Bifoldable RunGetResult Source #
>>> bifoldMap (++"abc") (++"def") (_RunGet # "hi")
"hidef"
>>> bifoldMap (++"abc") (++"def") (_RunGetFail # (12, "hi"))
"hiabc"

Methods

bifold :: Monoid m => RunGetResult m m -> m #

bifoldMap :: Monoid m => (a -> m) -> (b -> m) -> RunGetResult a b -> m #

bifoldr :: (a -> c -> c) -> (b -> c -> c) -> c -> RunGetResult a b -> c #

bifoldl :: (c -> a -> c) -> (c -> b -> c) -> c -> RunGetResult a b -> c #

Monad (RunGetResult e) Source #
>>> _RunGet # 8 >>= \g -> if even g then _RunGet # (g * 2) else _RunGetFail # (13, g * 14)
RunGet 16
>>> _RunGet # 9 >>= \g -> if even g then _RunGet # (g * 2) else _RunGetFail # (13, g * 14)
RunGetFail 13 126
>>> _RunGetFail # (10, 8) >>= \g -> if even g then _RunGet # (g * 2) else _RunGetFail # (13, g * 14)
RunGetFail 10 8

Methods

(>>=) :: RunGetResult e a -> (a -> RunGetResult e b) -> RunGetResult e b #

(>>) :: RunGetResult e a -> RunGetResult e b -> RunGetResult e b #

return :: a -> RunGetResult e a #

fail :: String -> RunGetResult e a #

Functor (RunGetResult e) Source #
>>> fmap (*2) (_RunGet # 8)
RunGet 16
>>> fmap (*2) (_RunGetFail # (9, 13))
RunGetFail 9 13

Methods

fmap :: (a -> b) -> RunGetResult e a -> RunGetResult e b #

(<$) :: a -> RunGetResult e b -> RunGetResult e a #

Applicative (RunGetResult e) Source #
>>> pure 7 :: RunGetResult () Int
RunGet 7
>>> _RunGet # (*2) <*> _RunGet # 9
RunGet 18
>>> _RunGetFail # (10, 2) <*> _RunGet # 9
RunGetFail 10 2
>>> _RunGet # (*2) <*> _RunGetFail # (11, 3)
RunGetFail 11 3
>>> _RunGetFail # (10, 2) <*> _RunGetFail # (11, 3)
RunGetFail 10 2

Methods

pure :: a -> RunGetResult e a #

(<*>) :: RunGetResult e (a -> b) -> RunGetResult e a -> RunGetResult e b #

(*>) :: RunGetResult e a -> RunGetResult e b -> RunGetResult e b #

(<*) :: RunGetResult e a -> RunGetResult e b -> RunGetResult e a #

Foldable (RunGetResult e) Source #
>>> foldMap (++"abc") (_RunGet # "hi")
"hiabc"
>>> foldMap (++"abc") (_RunGetFail # (12, "hi"))
""

Methods

fold :: Monoid m => RunGetResult e m -> m #

foldMap :: Monoid m => (a -> m) -> RunGetResult e a -> m #

foldr :: (a -> b -> b) -> b -> RunGetResult e a -> b #

foldr' :: (a -> b -> b) -> b -> RunGetResult e a -> b #

foldl :: (b -> a -> b) -> b -> RunGetResult e a -> b #

foldl' :: (b -> a -> b) -> b -> RunGetResult e a -> b #

foldr1 :: (a -> a -> a) -> RunGetResult e a -> a #

foldl1 :: (a -> a -> a) -> RunGetResult e a -> a #

toList :: RunGetResult e a -> [a] #

null :: RunGetResult e a -> Bool #

length :: RunGetResult e a -> Int #

elem :: Eq a => a -> RunGetResult e a -> Bool #

maximum :: Ord a => RunGetResult e a -> a #

minimum :: Ord a => RunGetResult e a -> a #

sum :: Num a => RunGetResult e a -> a #

product :: Num a => RunGetResult e a -> a #

Traversable (RunGetResult e) Source #
>>> traverse (\n -> if n `mod` 5 == 0 then [n + 1] else [n * 7]) (_RunGet # 8)
[RunGet 56]
>>> traverse (\n -> if n `mod` 5 == 0 then [n + 1] else [n * 7]) (_RunGet # 10)
[RunGet 11]

Methods

traverse :: Applicative f => (a -> f b) -> RunGetResult e a -> f (RunGetResult e b) #

sequenceA :: Applicative f => RunGetResult e (f a) -> f (RunGetResult e a) #

mapM :: Monad m => (a -> m b) -> RunGetResult e a -> m (RunGetResult e b) #

sequence :: Monad m => RunGetResult e (m a) -> m (RunGetResult e a) #

Alt (RunGetResult e) Source #
>>> _RunGet # 8 <!> _RunGet # 9
RunGet 8
>>> _RunGet # 8 <!> _RunGetFail # (10, 9)
RunGet 8
>>> _RunGetFail # (10, 8) <!> _RunGet # 9
RunGet 9
>>> _RunGetFail # (10, 8) <!> _RunGet # (20, 9)
RunGet (20,9)
Apply (RunGetResult e) Source #
>>> _RunGet # (*2) <.> _RunGet # 9
RunGet 18
>>> _RunGetFail # (10, 2) <.> _RunGet # 9
RunGetFail 10 2
>>> _RunGet # (*2) <.> _RunGetFail # (11, 3)
RunGetFail 11 3
>>> _RunGetFail # (10, 2) <.> _RunGetFail # (11, 3)
RunGetFail 10 2

Methods

(<.>) :: RunGetResult e (a -> b) -> RunGetResult e a -> RunGetResult e b #

(.>) :: RunGetResult e a -> RunGetResult e b -> RunGetResult e b #

(<.) :: RunGetResult e a -> RunGetResult e b -> RunGetResult e a #

Bind (RunGetResult e) Source #
>>> return 7 :: RunGetResult () Int
RunGet 7
>>> _RunGet # 8 >>- \g -> if even g then _RunGet # (g * 2) else _RunGetFail # (13, g * 14)
RunGet 16
>>> _RunGet # 9 >>- \g -> if even g then _RunGet # (g * 2) else _RunGetFail # (13, g * 14)
RunGetFail 13 126
>>> _RunGetFail # (10, 8) >>- \g -> if even g then _RunGet # (g * 2) else _RunGetFail # (13, g * 14)
RunGetFail 10 8

Methods

(>>-) :: RunGetResult e a -> (a -> RunGetResult e b) -> RunGetResult e b #

join :: RunGetResult e (RunGetResult e a) -> RunGetResult e a #

Extend (RunGetResult e) Source #
>>> duplicated (_RunGet # 8)
RunGet (RunGet 8)
>>> duplicated (_RunGetFail # (9, "abc"))
RunGetFail 9 "abc"
(Eq a, Eq e) => Eq (RunGetResult e a) Source # 

Methods

(==) :: RunGetResult e a -> RunGetResult e a -> Bool #

(/=) :: RunGetResult e a -> RunGetResult e a -> Bool #

(Ord a, Ord e) => Ord (RunGetResult e a) Source # 
(Show a, Show e) => Show (RunGetResult e a) Source # 
Semigroup (RunGetResult e a) Source #
>>> _RunGet # 8 <> _RunGet # 9
RunGet 8
>>> _RunGet # 8 <> _RunGetFail # (10, 9)
RunGet 8
>>> _RunGetFail # (10, 8) <> _RunGet # 9
RunGet 9
>>> _RunGetFail # (10, 8) <> _RunGet # (20, 9)
RunGet (20,9)

Methods

(<>) :: RunGetResult e a -> RunGetResult e a -> RunGetResult e a #

sconcat :: NonEmpty (RunGetResult e a) -> RunGetResult e a #

stimes :: Integral b => b -> RunGetResult e a -> RunGetResult e a #

Reduction

runGetResult :: (Int64 -> e -> x) -> (a -> x) -> RunGetResult e a -> x Source #

>>> runGetResult (+) (*2) (_RunGet # 12)
24
>>> runGetResult (+) (*2) (_RunGetFail # (23, 12))
35

Prisms

_RunGetFail :: Prism' (RunGetResult e a) (Int64, e) Source #

>>> _RunGetFail # (10, "abc")
RunGetFail 10 "abc"
>>> (_RunGet # 8) ^? _RunGetFail
Nothing
>>> (_RunGetFail # (8, "abc")) ^? _RunGetFail
Just (8,"abc")

_RunGet :: Prism' (RunGetResult e a) a Source #

>>> :t _RunGet # 8
_RunGet # 8 :: Num b => RunGetResult e b
>>> (_RunGet # 8) ^? _RunGet
Just 8
>>> (_RunGetFail # (8, "abc")) ^? _RunGet
Nothing

Isomorphisms

runGetResultEitherIso :: Iso (RunGetResult a b) (RunGetResult b d) (Either (Int64, a) b) (Either (Int64, b) d) Source #

>>> runGetResultEitherIso # Right 99
RunGet 99
>>> runGetResultEitherIso # Left (12, "abc")
RunGetFail 12 "abc"
>>> from runGetResultEitherIso # _RunGet # 99
Right 99
>>> from runGetResultEitherIso # _RunGetFail # (12, "abc")
Left (12,"abc")

runGetResultValidationIso :: Iso (RunGetResult a b) (RunGetResult b d) (Validation (Int64, a) b) (Validation (Int64, b) d) Source #

>>> runGetResultValidationIso # _Success # 99
RunGet 99
>>> runGetResultValidationIso # _Failure # (12, "abc")
RunGetFail 12 "abc"
>>> from runGetResultValidationIso # _RunGet # 99
Success 99
>>> from runGetResultValidationIso # _RunGetFail # (12, "abc")
Failure (12,"abc")

runGetResultValidation'Iso :: Iso (RunGetResult a b) (RunGetResult b d) (Validation' (Int64, a) b) (Validation' (Int64, b) d) Source #

>>> runGetResultValidation'Iso . from _Validation' # _Right # 99
RunGet 99
>>> runGetResultValidation'Iso . from _Validation' # _Left # (12, "abc")
RunGetFail 12 "abc"
>>> from (runGetResultValidation'Iso . from _Validation') # _RunGet # 99 :: Validation (Int64, ()) Int
Success 99
>>> from (runGetResultValidation'Iso . from _Validation') # _RunGetFail # (12, "abc") :: Validation (Int64, String) ()
Failure (12,"abc")

runGetResultAccValidationIso :: Iso (RunGetResult a b) (RunGetResult b d) (AccValidation (Int64, a) b) (AccValidation (Int64, b) d) Source #

>>> runGetResultAccValidationIso # _Success # 99
RunGet 99
>>> runGetResultAccValidationIso # _Failure # (12, "abc")
RunGetFail 12 "abc"
>>> from runGetResultAccValidationIso # _RunGet # 99
AccSuccess 99
>>> from runGetResultAccValidationIso # _RunGetFail # (12, "abc")
AccFailure (12,"abc")