module Data.Either.HT ( mapLeft, mapRight, mapBoth, ) where mapLeft :: (a -> b) -> Either a c -> Either b c mapLeft :: (a -> b) -> Either a c -> Either b c mapLeft f :: a -> b f = (a -> Either b c) -> (c -> Either b c) -> Either a c -> Either b c forall a c b. (a -> c) -> (b -> c) -> Either a b -> c either (b -> Either b c forall a b. a -> Either a b Left (b -> Either b c) -> (a -> b) -> a -> Either b c forall b c a. (b -> c) -> (a -> b) -> a -> c . a -> b f) c -> Either b c forall a b. b -> Either a b Right mapRight :: (b -> c) -> Either a b -> Either a c mapRight :: (b -> c) -> Either a b -> Either a c mapRight f :: b -> c f = (a -> Either a c) -> (b -> Either a c) -> Either a b -> Either a c forall a c b. (a -> c) -> (b -> c) -> Either a b -> c either a -> Either a c forall a b. a -> Either a b Left (c -> Either a c forall a b. b -> Either a b Right (c -> Either a c) -> (b -> c) -> b -> Either a c forall b c a. (b -> c) -> (a -> b) -> a -> c . b -> c f) mapBoth :: (a -> c) -> (b -> d) -> Either a b -> Either c d mapBoth :: (a -> c) -> (b -> d) -> Either a b -> Either c d mapBoth f :: a -> c f g :: b -> d g = (a -> Either c d) -> (b -> Either c d) -> Either a b -> Either c d forall a c b. (a -> c) -> (b -> c) -> Either a b -> c either (c -> Either c d forall a b. a -> Either a b Left (c -> Either c d) -> (a -> c) -> a -> Either c d forall b c a. (b -> c) -> (a -> b) -> a -> c . a -> c f) (d -> Either c d forall a b. b -> Either a b Right (d -> Either c d) -> (b -> d) -> b -> Either c d forall b c a. (b -> c) -> (a -> b) -> a -> c . b -> d g)