module Rebase.Data.Bifunctor
  ( module Data.Bifunctor,
    mapLeft,
    mapRight,
  )
where

import Data.Bifunctor

-- |
-- A more meaningful and conflict-free alias for 'first'.
{-# INLINE mapLeft #-}
mapLeft :: (Bifunctor p) => (a -> b) -> p a c -> p b c
mapLeft :: forall (p :: * -> * -> *) a b c.
Bifunctor p =>
(a -> b) -> p a c -> p b c
mapLeft =
  forall (p :: * -> * -> *) a b c.
Bifunctor p =>
(a -> b) -> p a c -> p b c
first

-- |
-- A more meaningful and conflict-free alias for 'second'.
{-# INLINE mapRight #-}
mapRight :: (Bifunctor p) => (b -> c) -> p a b -> p a c
mapRight :: forall (p :: * -> * -> *) b c a.
Bifunctor p =>
(b -> c) -> p a b -> p a c
mapRight =
  forall (p :: * -> * -> *) b c a.
Bifunctor p =>
(b -> c) -> p a b -> p a c
second