module Prologue.Data.Bifunctor (module Prologue.Data.Bifunctor, module X) where

import qualified Data.Bifunctor    as B
import           Data.Bifunctor    as X (Bifunctor, bimap)
import           Data.Bifunctor.TH as X (deriveBifunctor, deriveBifoldable, deriveBitraversable)

mapFirst  :: Bifunctor p => (a -> b) -> p a c -> p b c
mapSecond :: Bifunctor p => (b -> c) -> p a b -> p a c
mapFirst  = B.first  ; {-# INLINE mapFirst  #-}
mapSecond = B.second ; {-# INLINE mapSecond #-}