{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# LANGUAGE CPP #-}
module Colog.Contra
(
) where
#if !MIN_VERSION_base(4,12,0)
import Data.Functor.Contravariant (Contravariant (..))
#endif
import Data.Functor.Contravariant.Divisible (Decidable (..), Divisible (..))
import Colog.Core.Action (LogAction)
import qualified Colog.Core.Action as LA
#if !MIN_VERSION_base(4,12,0)
instance Contravariant (LogAction m) where
contramap = LA.cmap
{-# INLINE contramap #-}
(>$) = (LA.>$)
{-# INLINE (>$) #-}
#endif
instance (Applicative m) => Divisible (LogAction m) where
divide :: (a -> (b, c)) -> LogAction m b -> LogAction m c -> LogAction m a
divide = (a -> (b, c)) -> LogAction m b -> LogAction m c -> LogAction m a
forall (m :: * -> *) a b c.
Applicative m =>
(a -> (b, c)) -> LogAction m b -> LogAction m c -> LogAction m a
LA.divide
{-# INLINE divide #-}
conquer :: LogAction m a
conquer = LogAction m a
forall (m :: * -> *) a. Applicative m => LogAction m a
LA.conquer
{-# INLINE conquer #-}
instance (Applicative m) => Decidable (LogAction m) where
lose :: (a -> Void) -> LogAction m a
lose = (a -> Void) -> LogAction m a
forall a (m :: * -> *). (a -> Void) -> LogAction m a
LA.lose
{-# INLINE lose #-}
choose :: (a -> Either b c)
-> LogAction m b -> LogAction m c -> LogAction m a
choose = (a -> Either b c)
-> LogAction m b -> LogAction m c -> LogAction m a
forall a b c (m :: * -> *).
(a -> Either b c)
-> LogAction m b -> LogAction m c -> LogAction m a
LA.choose
{-# INLINE choose #-}