{-# LANGUAGE CPP #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
{-|
Description: Orphan instances for monad-logger's LoggingT
-}
module Control.Monad.Logger.Orphans where

import Control.Monad.Logger

import Control.Applicative (Alternative(..))
import Control.Monad (MonadPlus(..))

#if !MIN_VERSION_monad_logger(0,3,40)
import Control.Monad.Trans (lift)

instance (Monad m, Alternative m) => Alternative (LoggingT m) where
  empty = lift empty
  a <|> b = LoggingT $ \f -> runLoggingT a f <|> runLoggingT b f
#endif

instance (Monad m, Alternative m) => MonadPlus (LoggingT m)