relude-0.2.0: Custom prelude from Kowainik

Copyright(c) 2018 Kowainik
LicenseMIT
MaintainerKowainik <xrom.xkov@gmail.com>
Safe HaskellSafe
LanguageHaskell2010

Relude.Extra.Bifunctor

Description

Useful combinators for bifunctors inside functors. This set of functions is useful when you want to work with types like these ones:

foo :: IO (Either a b)
bar :: IO (a, b)

baz :: Maybe (Either a b)
qux :: Maybe (a, b)
Synopsis

Documentation

bimapF :: (Functor f, Bifunctor p) => (a -> c) -> (b -> d) -> f (p a b) -> f (p c d) Source #

Fmaps functions for nested bifunctor. Short for fmap (bimap f g).

>>> bimapF not length $ Just (False, ['a', 'b'])
Just (True,2)

firstF :: (Functor f, Bifunctor p) => (a -> c) -> f (p a b) -> f (p c b) Source #

Short for fmap . first.

>>> firstF not $ Just (False, ['a', 'b'])
Just (True,"ab")

secondF :: (Functor f, Bifunctor p) => (b -> d) -> f (p a b) -> f (p a d) Source #

Short for fmap . second.

>>> secondF length  $ Just (False, ['a', 'b'])
Just (False,2)