Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Documentation
class MonadIO (m :: ★ -> ★) where Source #
Instances
MonadIO IO Source # | |
MonadIO Q Source # | |
(Monad m, MonadIO m) => MonadIO (FailT m) Source # | |
(Monad m, MonadIO m) => MonadIO (NondetT m) Source # | |
(Monad m, MonadIO m) => MonadIO (DelayT m) Source # | |
(Monad m, MonadIO m) => MonadIO (ErrorT e m) Source # | |
(Monad m, MonadIO m) => MonadIO (StateT s m) Source # | |
(Monad m, MonadIO m) => MonadIO (UContT m) Source # | |
(Null o, Monad m, MonadIO m) => MonadIO (WriterT o m) Source # | |
(Monad m, MonadIO m) => MonadIO (ContT u m) Source # | |
(Monad m, MonadIO m) => MonadIO (ReaderT r m) Source # | |
(Monad m, Monoid o, MonadIO m) => MonadIO (RWST r o s m) Source # | |
Instances
LiftIO FailT Source # | |
LiftIO NondetT Source # | |
LiftIO (DelayT :: (Type -> Type) -> Type -> Type) Source # | |
LiftIO (ErrorT e) Source # | |
LiftIO (StateT s) Source # | |
LiftIO (UContT :: (Type -> Type) -> Type -> Type) Source # | |
Null o => LiftIO (WriterT o) Source # | |
LiftIO (ContT u) Source # | |
LiftIO (ReaderT r :: (Type -> Type) -> Type -> Type) Source # | |
(forall (m' :: Type -> Type). Monad m' => Monad (t₂ m'), LiftIO t₁, LiftIO t₂) => LiftIO (t₁ ⊡ t₂) Source # | |
class MonadReader r m | m -> r where Source #
Instances
MonadReader FuzzyEnv FuzzyM Source # | |
MonadReader ParserEnv (Parser t) Source # | |
(Monad m, MonadReader r m) => MonadReader r (FailT m) Source # | |
(Monad m, MonadReader r m) => MonadReader r (NondetT m) Source # | |
(Monad m, MonadReader r m) => MonadReader r (DelayT m) Source # | |
(Monad m, MonadReader r m) => MonadReader r (ErrorT e m) Source # | |
(Monad m, MonadReader r m) => MonadReader r (StateT s m) Source # | |
(Monad m, MonadReader r m) => MonadReader r (UContT m) Source # | |
(Null o, Monad m, MonadReader r m) => MonadReader r (WriterT o m) Source # | |
(Monad m, MonadReader r m) => MonadReader r (ContT u m) Source # | |
Monad m => MonadReader r (ReaderT r m) Source # | |
MonadReader r ((->) r) Source # | |
(Monad m, Monoid o) => MonadReader r (RWST r o s m) Source # | |
Ord s => MonadReader (SubstEnv s e) (SubstM s e) Source # | |
class LiftReader t where Source #
liftAskL :: forall m r. Monad m => (forall r'. (r ⟢ r') -> m r') -> forall r'. (r ⟢ r') -> t m r' Source #
liftLocalL :: forall m r. Monad m => (forall r' a. (r ⟢ r') -> r' -> m a -> m a) -> forall r' a. (r ⟢ r') -> r' -> t m a -> t m a Source #
Instances
LiftReader FailT Source # | |
LiftReader NondetT Source # | |
LiftReader (DelayT :: (Type -> Type) -> Type -> Type) Source # | |
LiftReader (ErrorT e) Source # | |
LiftReader (StateT s) Source # | |
Null o => LiftReader (WriterT o) Source # | |
LiftReader (ReaderT r :: (Type -> Type) -> Type -> Type) Source # | |
(forall (m' :: Type -> Type). Monad m' => Monad (t₂ m'), LiftReader t₁, LiftReader t₂) => LiftReader (t₁ ⊡ t₂) Source # | |
class MonadWriter o m | m -> o where Source #
Instances
Null o => MonadWriter o ((∧) o) Source # | |
(Monad m, MonadWriter o m) => MonadWriter o (FailT m) Source # | |
(Monad m, MonadWriter o m) => MonadWriter o (NondetT m) Source # | |
(Monad m, MonadWriter o m) => MonadWriter o (DelayT m) Source # | |
(Monad m, MonadWriter o m) => MonadWriter o (ErrorT e m) Source # | |
(Monad m, MonadWriter o m) => MonadWriter o (StateT s m) Source # | |
(Monad m, Monoid o, MonadWriter o m) => MonadWriter o (UContT m) Source # | |
(Monad m, Null o) => MonadWriter o (WriterT o m) Source # | |
(Monad m, Monoid o, MonadWriter o m) => MonadWriter o (ContT (o ∧ r) m) Source # | |
(Monad m, MonadWriter o m) => MonadWriter o (ReaderT r m) Source # | |
(Monad m, Monoid o) => MonadWriter o (RWST r o s m) Source # | |
MonadWriter (ParserOut t) (Parser t) Source # | |
Ord s => MonadWriter (s ⇰ 𝑃 𝕐) (SubstM s e) Source # | |
class LiftWriter t where Source #
liftTell :: forall m o. Monad m => (o -> m ()) -> o -> t m () Source #
liftHijack :: forall m o. Monad m => (forall a. m a -> m (o ∧ a)) -> forall a. t m a -> t m (o ∧ a) Source #
Instances
LiftWriter FailT Source # | |
LiftWriter NondetT Source # | |
LiftWriter (DelayT :: (Type -> Type) -> Type -> Type) Source # | |
LiftWriter (ErrorT e) Source # | |
LiftWriter (StateT s) Source # | |
Null o => LiftWriter (WriterT o) Source # | |
LiftWriter (ReaderT r :: (Type -> Type) -> Type -> Type) Source # | |
(forall (m' :: Type -> Type). Monad m' => Monad (t₂ m'), LiftWriter t₁, LiftWriter t₂) => LiftWriter (t₁ ⊡ t₂) Source # | |
class MonadState s m | m -> s where Source #
Instances
MonadState RG FuzzyM Source # | |
(Monad m, MonadState s m) => MonadState s (FailT m) Source # | |
(Monad m, MonadState s m) => MonadState s (NondetT m) Source # | |
(Monad m, MonadState s m) => MonadState s (DelayT m) Source # | |
(Monad m, MonadState s m) => MonadState s (ErrorT e m) Source # | |
Return m => MonadState s (StateT s m) Source # | |
(Monad m, MonadState s m) => MonadState s (UContT m) Source # | |
(Null o, Monad m, MonadState s m) => MonadState s (WriterT o m) Source # | |
(Monad m, MonadState s m) => MonadState s (ContT u m) Source # | |
(Monad m, MonadState s m) => MonadState s (ReaderT r m) Source # | |
(Monad m, Monoid o) => MonadState s (RWST r o s m) Source # | |
MonadState (ParserState t) (Parser t) Source # | |
Defined in UVMHS.Lib.Parser.Core get :: Parser t (ParserState t) Source # put :: ParserState t -> Parser t () Source # |
class LiftState t where Source #
liftGet :: forall m s. Monad m => m s -> t m s Source #
liftPut :: forall m s. Monad m => (s -> m ()) -> s -> t m () Source #
Instances
LiftState FailT Source # | |
LiftState NondetT Source # | |
LiftState (DelayT :: (Type -> Type) -> Type -> Type) Source # | |
LiftState (ErrorT e) Source # | |
LiftState (StateT s) Source # | |
Null o => LiftState (WriterT o) Source # | |
LiftState (ReaderT r :: (Type -> Type) -> Type -> Type) Source # | |
(forall (m' :: Type -> Type). Monad m' => Monad (t₂ m'), LiftState t₁, LiftState t₂) => LiftState (t₁ ⊡ t₂) Source # | |
class MonadFail m where Source #
Instances
MonadFail 𝑂 Source # | |
Monad m => MonadFail (FailT m :: Type -> Type) Source # | |
(Monad m, MonadFail m) => MonadFail (NondetT m :: Type -> Type) Source # | |
Ord t => MonadFail (CParser t :: Type -> Type) Source # | |
MonadFail (Parser t :: Type -> Type) Source # | |
(Monad m, MonadFail m) => MonadFail (DelayT m :: Type -> Type) Source # | |
(Monad m, MonadFail m) => MonadFail (ErrorT e m :: Type -> Type) Source # | |
(Monad m, MonadFail m) => MonadFail (StateT s m :: Type -> Type) Source # | |
(Monad m, MonadFail m) => MonadFail (UContT m :: Type -> Type) Source # | |
(Monad m, MonadFail m) => MonadFail (WriterT o m :: Type -> Type) Source # | |
Ord s => MonadFail (SubstM s e :: Type -> Type) Source # | |
(Monad m, MonadFail m) => MonadFail (ContT u m :: Type -> Type) Source # | |
(Monad m, MonadFail m) => MonadFail (ReaderT r m :: Type -> Type) Source # | |
(Monad m, Monoid o, MonadFail m) => MonadFail (RWST r o s m :: Type -> Type) Source # | |
class LiftFail t where Source #
liftAbort :: forall m. Monad m => (forall a. m a) -> forall a. t m a Source #
liftTry :: forall m. Monad m => (forall a. m a -> m a -> m a) -> forall a. t m a -> t m a -> t m a Source #
Instances
LiftFail FailT Source # | |
LiftFail NondetT Source # | |
LiftFail (DelayT :: (Type -> Type) -> Type -> Type) Source # | |
LiftFail (ErrorT e :: (Type -> Type) -> Type -> Type) Source # | |
LiftFail (StateT s :: (Type -> Type) -> Type -> Type) Source # | |
LiftFail (WriterT o :: (Type -> Type) -> Type -> Type) Source # | |
LiftFail (ReaderT r :: (Type -> Type) -> Type -> Type) Source # | |
(forall (m' :: Type -> Type). Monad m' => Monad (t₂ m'), LiftFail t₁, LiftFail t₂) => LiftFail (t₁ ⊡ t₂ :: (Type -> Type) -> Type -> Type) Source # | |
class MonadError e m | m -> e where Source #
Instances
MonadError e ((∨) e :: Type -> Type) Source # | |
(Monad m, MonadError e m) => MonadError e (FailT m :: Type -> Type) Source # | |
(Monad m, MonadError e m) => MonadError e (NondetT m :: Type -> Type) Source # | |
(Monad m, MonadError e m) => MonadError e (DelayT m :: Type -> Type) Source # | |
Monad m => MonadError e (ErrorT e m :: Type -> Type) Source # | |
(Monad m, MonadError e m) => MonadError e (StateT s m :: Type -> Type) Source # | |
(Monad m, MonadError e m) => MonadError e (UContT m :: Type -> Type) Source # | |
(Monad m, MonadError e m) => MonadError e (WriterT o m :: Type -> Type) Source # | |
(Monad m, MonadError e m) => MonadError e (ContT u m :: Type -> Type) Source # | |
(Monad m, MonadError e m) => MonadError e (ReaderT r m :: Type -> Type) Source # | |
(Monad m, Monoid o, MonadError e m) => MonadError e (RWST r o s m :: Type -> Type) Source # | |
class LiftError t where Source #
liftThrow :: forall m e. Monad m => (forall a. e -> m a) -> forall a. e -> t m a Source #
liftCatch :: forall m e. Monad m => (forall a. m a -> (e -> m a) -> m a) -> forall a. t m a -> (e -> t m a) -> t m a Source #
Instances
LiftError FailT Source # | |
LiftError NondetT Source # | |
LiftError (DelayT :: (Type -> Type) -> Type -> Type) Source # | |
LiftError (ErrorT e :: (Type -> Type) -> Type -> Type) Source # | |
LiftError (StateT s :: (Type -> Type) -> Type -> Type) Source # | |
LiftError (WriterT o :: (Type -> Type) -> Type -> Type) Source # | |
LiftError (ReaderT r :: (Type -> Type) -> Type -> Type) Source # | |
(forall (m' :: Type -> Type). Monad m' => Monad (t₂ m'), LiftError t₁, LiftError t₂) => LiftError (t₁ ⊡ t₂ :: (Type -> Type) -> Type -> Type) Source # | |
class MonadDelay m where Source #
Instances
(Monad m, MonadDelay m) => MonadDelay (FailT m :: Type -> Type) Source # | |
(Monad m, MonadDelay m) => MonadDelay (NondetT m :: Type -> Type) Source # | |
(Monad m, MonadDelay m) => MonadDelay (ErrorT e m :: Type -> Type) Source # | |
(Monad m, MonadDelay m) => MonadDelay (StateT s m :: Type -> Type) Source # | |
(Monad m, MonadDelay m) => MonadDelay (UContT m :: Type -> Type) Source # | |
(Monad m, MonadDelay m) => MonadDelay (WriterT o m :: Type -> Type) Source # | |
MonadDelay (DelayT m :: k -> Type) Source # | |
(Monad m, MonadDelay m) => MonadDelay (ContT u m :: Type -> Type) Source # | |
(Monad m, MonadDelay m) => MonadDelay (ReaderT r m :: Type -> Type) Source # | |
(Monad m, Monoid o, MonadDelay m) => MonadDelay (RWST r o s m :: Type -> Type) Source # | |
class LiftDelay t where Source #
liftDelay :: forall m. Monad m => (forall a. (() -> m a) -> m a) -> forall a. (() -> t m a) -> t m a Source #
Instances
LiftDelay FailT Source # | |
LiftDelay NondetT Source # | |
LiftDelay (DelayT :: (Type -> Type) -> Type -> Type) Source # | |
LiftDelay (ErrorT e :: (Type -> Type) -> Type -> Type) Source # | |
LiftDelay (StateT s :: (Type -> Type) -> Type -> Type) Source # | |
LiftDelay (UContT :: (Type -> Type) -> Type -> Type) Source # | |
LiftDelay (WriterT o :: (Type -> Type) -> Type -> Type) Source # | |
LiftDelay (ContT u :: (Type -> Type) -> Type -> Type) Source # | |
LiftDelay (ReaderT r :: (Type -> Type) -> Type -> Type) Source # | |
(forall (m' :: Type -> Type). Monad m' => Monad (t₂ m'), LiftDelay t₁, LiftDelay t₂) => LiftDelay (t₁ ⊡ t₂ :: (Type -> Type) -> Type -> Type) Source # | |
class MonadNondet m where Source #
Instances
MonadNondet 𝐼 Source # | |
MonadNondet 𝐿 Source # | |
MonadNondet 𝑄 Source # | |
(Monad m, MonadNondet m) => MonadNondet (FailT m :: Type -> Type) Source # | |
Func Monoid m => MonadNondet (NondetT m :: Type -> Type) Source # | |
(Monad m, MonadNondet m) => MonadNondet (DelayT m :: Type -> Type) Source # | |
(Monad m, MonadNondet m) => MonadNondet (ErrorT e m :: Type -> Type) Source # | |
(Monad m, MonadNondet m) => MonadNondet (StateT s m :: Type -> Type) Source # | |
(Monad m, MonadNondet m) => MonadNondet (UContT m :: Type -> Type) Source # | |
(Monad m, MonadNondet m) => MonadNondet (WriterT o m :: Type -> Type) Source # | |
(Monad m, MonadNondet m) => MonadNondet (ContT u m :: Type -> Type) Source # | |
(Monad m, MonadNondet m) => MonadNondet (ReaderT r m :: Type -> Type) Source # | |
(Monad m, Monoid o, MonadNondet m) => MonadNondet (RWST r o s m :: Type -> Type) Source # | |
class LiftNondet t where Source #
liftMzero :: forall m. Monad m => (forall a. m a) -> forall a. t m a Source #
liftMplus :: forall m. Monad m => (forall a. m a -> m a -> m a) -> forall a. t m a -> t m a -> t m a Source #
Instances
LiftNondet FailT Source # | |
LiftNondet NondetT Source # | |
LiftNondet (DelayT :: (Type -> Type) -> Type -> Type) Source # | |
LiftNondet (ErrorT e :: (Type -> Type) -> Type -> Type) Source # | |
LiftNondet (StateT s :: (Type -> Type) -> Type -> Type) Source # | |
LiftNondet (WriterT o :: (Type -> Type) -> Type -> Type) Source # | |
LiftNondet (ReaderT r :: (Type -> Type) -> Type -> Type) Source # | |
(forall (m' :: Type -> Type). Monad m' => Monad (t₂ m'), LiftNondet t₁, LiftNondet t₂) => LiftNondet (t₁ ⊡ t₂ :: (Type -> Type) -> Type -> Type) Source # | |
class MonadTop m where Source #
Instances
class LiftTop t where Source #
Instances
LiftTop FailT Source # | |
LiftTop NondetT Source # | |
LiftTop (DelayT :: (Type -> Type) -> Type -> Type) Source # | |
LiftTop (ErrorT e :: (Type -> Type) -> Type -> Type) Source # | |
LiftTop (StateT s :: (Type -> Type) -> Type -> Type) Source # | |
LiftTop (WriterT o :: (Type -> Type) -> Type -> Type) Source # | |
LiftTop (ReaderT r :: (Type -> Type) -> Type -> Type) Source # | |
(forall (m' :: Type -> Type). Monad m' => Monad (t₂ m'), LiftTop t₁, LiftTop t₂) => LiftTop (t₁ ⊡ t₂ :: (Type -> Type) -> Type -> Type) Source # | |
class MonadCont r m | m -> r where Source #
Instances
(Monad m, MonadCont (𝑂 r) m) => MonadCont r (FailT m) Source # | |
(Monad m, Func Monoid m, MonadCont (𝑄 r) m) => MonadCont r (NondetT m) Source # | |
MonadCont r m => MonadCont r (DelayT m) Source # | |
(Monad m, MonadCont (e ∨ r) m) => MonadCont r (ErrorT e m) Source # | |
(Monoid o, Monad m, MonadCont (o ∧ r) m) => MonadCont r (WriterT o m) Source # | |
(Monad m, MonadCont (s ∧ u) m) => MonadCont u (StateT s m) Source # | |
(Monad m, MonadCont r' m) => MonadCont r' (ReaderT r m) Source # | |
Monad m => MonadCont u (ContT u m) Source # | |
class LiftCont t where Source #
liftCallCC :: forall m r. Monad m => (forall a. ((a -> m r) -> m r) -> m a) -> forall a. ((a -> t m r) -> t m r) -> t m a Source #
liftWithC :: forall m r. Monad m => (forall a. (a -> m r) -> m a -> m r) -> forall a. (a -> t m r) -> t m a -> t m r Source #
class MonadUCont m where Source #
Instances
MonadUCont m => MonadUCont (DelayT m) Source # | |
Monad m => MonadUCont (UContT m) Source # | |
Ord s => MonadUCont (SubstM s e) Source # | |
class LiftUCont t where Source #
liftUCallCC :: forall m. Monad m => (forall a. (forall u. (a -> m u) -> m u) -> m a) -> forall a. (forall u. (a -> t m u) -> t m u) -> t m a Source #
liftUWithC :: forall m. Monad m => (forall a u. (a -> m u) -> m a -> m u) -> forall a u. (a -> t m u) -> t m a -> t m u Source #
ask :: (Monad m, MonadReader r m) => m r Source #
local :: (Monad m, MonadReader r m) => r -> m a -> m a Source #
mapEnv :: (Monad m, MonadReader r m) => (r -> r) -> m a -> m a Source #
mapOut :: (Monad m, MonadWriter o m) => (o -> o) -> m a -> m a Source #
retOut :: forall o m a. (Monad m, MonadWriter o m) => m a -> m o Source #
modify :: (Monad m, MonadState s m) => (s -> s) -> m () Source #
modifyM :: (Monad m, MonadState s m) => (s -> m s) -> m () Source #
getput :: (Monad m, MonadState s m) => s -> m s Source #
next :: (Monad m, MonadState s m, Multiplicative s) => m s Source #
nextL :: (Monad m, MonadState s m, Multiplicative a) => (s ⟢ a) -> m a Source #
bump :: (Monad m, MonadState s m, Multiplicative s) => m () Source #
bumpL :: (Monad m, MonadState s m, Multiplicative a) => (s ⟢ a) -> m () Source #
localState :: (Monad m, MonadState s m) => s -> m a -> m a Source #
localStateL :: (Monad m, MonadState s₁ m) => (s₁ ⟢ s₂) -> s₂ -> m a -> m a Source #
retState :: (Monad m, MonadState s m) => m a -> m s Source #
retStateOut :: (Monad m, MonadState s m, MonadWriter o m) => m a -> m (s ∧ o) Source #
tellStateL :: (Monad m, MonadState o₁ m, Append o₂) => (o₁ ⟢ o₂) -> o₂ -> m () Source #
hijackStateL :: (Monad m, MonadState o₁ m, Null o₂) => (o₁ ⟢ o₂) -> m a -> m (o₂ ∧ a) Source #
localMapStateL :: (Monad m, MonadState s₁ m) => (s₁ ⟢ s₂) -> (s₂ -> s₂) -> m a -> m a Source #
localStateEffectsL :: (Monad m, MonadState s₁ m) => (s₁ ⟢ s₂) -> m a -> m a Source #
mconcat :: (MonadNondet m, ToIter (m a) t) => t -> m a Source #
oneOrMoreSplitNT :: (Monad m, MonadNondet m) => m a -> m (a ∧ 𝐿 a) Source #
oneOrMoreNT :: (Monad m, MonadNondet m) => m a -> m (𝐿 a) Source #
twoOrMoreSplitNT :: (Monad m, MonadNondet m) => m a -> m ((a ∧ a) ∧ 𝐿 a) Source #
manyPrefBy :: (Monad m, MonadNondet m) => m () -> m a -> m (𝐿 a) Source #
modifyEnvL :: (Monad m, MonadReader r m, MonadCont u m) => (r ⟢ r') -> (r' -> r') -> m () Source #
ureset :: (Monad m, MonadUCont m) => m a -> m a Source #
umodifyC :: (Monad m, MonadUCont m) => (forall u. u -> m u) -> m () Source #
uwithCOn :: (Monad m, MonadUCont m) => m a -> (a -> m u) -> m u Source #
uputEnv :: (Monad m, MonadReader r m, MonadUCont m) => r -> m () Source #
uputEnvL :: (Monad m, MonadReader r m, MonadUCont m) => (r ⟢ r') -> r' -> m () Source #
umodifyEnv :: (Monad m, MonadReader r m, MonadUCont m) => (r -> r) -> m () Source #
umodifyEnvL :: (Monad m, MonadReader r m, MonadUCont m) => (r ⟢ r') -> (r' -> r') -> m () Source #
unextEnvL :: (Monad m, MonadReader r m, MonadUCont m, Zero a, One a, Plus a) => (r ⟢ a) -> m a Source #
deriveAskL :: forall m₁ m₂ r r'. (m₁ ⇄⁻ m₂, MonadReader r m₂) => (r ⟢ r') -> m₁ r' Source #
deriveLocal :: forall m₁ m₂ r r' a. (m₁ ⇄⁻ m₂, MonadReader r m₂) => (r ⟢ r') -> r' -> m₁ a -> m₁ a Source #
deriveTell :: forall m₁ m₂ o. (m₁ ⇄⁻ m₂, MonadWriter o m₂) => o -> m₁ () Source #
deriveHijack :: forall m₁ m₂ o a. (m₁ ⇄⁻ m₂, MonadWriter o m₂) => m₁ a -> m₁ (o ∧ a) Source #
deriveGet :: forall m₁ m₂ s. (m₁ ⇄⁻ m₂, MonadState s m₂) => m₁ s Source #
derivePut :: forall m₁ m₂ s. (m₁ ⇄⁻ m₂, MonadState s m₂) => s -> m₁ () Source #
deriveAbort :: forall m₁ m₂ a. (m₁ ⇄⁻ m₂, MonadFail m₂) => m₁ a Source #
deriveThrow :: forall m₁ m₂ e a. (m₁ ⇄⁻ m₂, MonadError e m₂) => e -> m₁ a Source #
deriveCatch :: forall m₁ m₂ e a. (m₁ ⇄⁻ m₂, MonadError e m₂) => m₁ a -> (e -> m₁ a) -> m₁ a Source #
deriveMzero :: forall m₁ m₂ a. (m₁ ⇄⁻ m₂, MonadNondet m₂) => m₁ a Source #
deriveMplus :: forall m₁ m₂ a. (m₁ ⇄⁻ m₂, MonadNondet m₂) => m₁ a -> m₁ a -> m₁ a Source #
deriveMtop :: forall m₁ m₂ a. (m₁ ⇄⁻ m₂, MonadTop m₂) => m₁ a Source #
deriveCallCC :: forall m₁ m₂ r a. (m₁ ⇄⁻ m₂, MonadCont r m₂) => ((a -> m₁ r) -> m₁ r) -> m₁ a Source #
deriveWithC :: forall m₁ m₂ r a. (m₁ ⇄⁻ m₂, MonadCont r m₂) => (a -> m₁ r) -> m₁ a -> m₁ r Source #