module Control.Monad.Fail.Try
(
MonadTry (..)
, MonadFail (..)
, MonadPlus (..)
, Alternative (..)
, Filterable (..)
) where
import Control.Applicative
import Control.Lens.Grammar.BackusNaur
import Control.Lens.PartialIso ()
import Control.Monad
import Data.Bifunctor.Joker
import Text.ParserCombinators.ReadP (ReadP)
import Witherable
class
( MonadFail m, MonadPlus m, Filterable m
, forall x. BackusNaurForm (m x)
) => MonadTry m where
try :: m a -> m a
default try :: m a -> m a
try = m a -> m a
forall a. a -> a
id
instance MonadTry m => MonadTry (Joker m a) where
try :: forall a. Joker m a a -> Joker m a a
try = m a -> Joker m a a
forall {k} {k1} (g :: k -> *) (a :: k1) (b :: k).
g b -> Joker g a b
Joker (m a -> Joker m a a)
-> (Joker m a a -> m a) -> Joker m a a -> Joker m a a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. m a -> m a
forall a. m a -> m a
forall (m :: * -> *) a. MonadTry m => m a -> m a
try (m a -> m a) -> (Joker m a a -> m a) -> Joker m a a -> m a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Joker m a a -> m a
forall {k1} {k2} (g :: k1 -> *) (a :: k2) (b :: k1).
Joker g a b -> g b
runJoker
instance MonadTry ReadP