{-# LANGUAGE FunctionalDependencies #-} {-# LANGUAGE KindSignatures #-} {-# LANGUAGE LinearTypes #-} {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE TypeOperators #-} -- | This module provides Bifunctor and related classes. -- -- == 'Bifunctor' -- -- Use a bifunctor instance to map functions over data structures -- that have two type paramaters @a@ and @b@ and could be have a -- functor instance for either the @a@s or @b@s. -- For instance, you might want to map a function on either the left -- or right element of a @(Int, Bool)@: -- -- > import Prelude.Linear -- > import Data.Bifunctor.Linear -- > -- > -- Map over the second element -- > negateRight :: (Int, Bool) %1-> (Int, Bool) -- > negateRight x = second not x module Data.Bifunctor.Linear ( Bifunctor(..), SymmetricMonoidal(..), ) where import Data.Bifunctor.Linear.Internal.Bifunctor import Data.Bifunctor.Linear.Internal.SymmetricMonoidal