module Control.Monad.Trans.Maybe.Extras where

import Control.Monad.Trans.Maybe
import Data.Maybe

-- | The more useful version is to use 'evalMaybeT' flipped so it can be in a chain of
-- transformer runners, like this @evalCont . (`evalMaybeT` val)@
-- This argument ordering is consistent with 'Control.Monad.Trans.State.evalStateT'.
evalMaybeT :: Functor m => MaybeT m a -> a -> m a
evalMaybeT m a = (fromMaybe a) <$> (runMaybeT m)