ExceptT #
@[simp]
theorem ExceptT.run_bind_lift {m : Type u_1 → Type u_2} {α ε β : Type u_1} [Monad m] [LawfulMonad m] (x : m α) (f : α → ExceptT ε m β) :
@[simp]
theorem ExceptT.lift_pure {m : Type u_1 → Type u_2} {α ε : Type u_1} [Monad m] [LawfulMonad m] (a : α) :
@[simp]
theorem ExceptT.run_map {m : Type u_1 → Type u_2} {α β ε : Type u_1} [Monad m] [LawfulMonad m] (f : α → β) (x : ExceptT ε m α) :
theorem ExceptT.seqLeft_eq {α β ε : Type u} {m : Type u → Type v} [Monad m] [LawfulMonad m] (x : ExceptT ε m α) (y : ExceptT ε m β) :
theorem ExceptT.seqRight_eq {m : Type u_1 → Type u_2} {ε α β : Type u_1} [Monad m] [LawfulMonad m] (x : ExceptT ε m α) (y : ExceptT ε m β) :
instance ExceptT.instLawfulMonad {m : Type u_1 → Type u_2} {ε : Type u_1} [Monad m] [LawfulMonad m] :
LawfulMonad (ExceptT ε m)
Note that the MonadControl instance for ExceptT is not monad-generic.
Except #
OptionT #
@[simp]
@[simp]
theorem OptionT.run_bind_lift {m : Type u_1 → Type u_2} {α β : Type u_1} [Monad m] [LawfulMonad m] (x : m α) (f : α → OptionT m β) :
@[simp]
@[simp]
theorem OptionT.run_map {m : Type u_1 → Type u_2} {α β : Type u_1} [Monad m] [LawfulMonad m] (f : α → β) (x : OptionT m α) :
theorem OptionT.seqLeft_eq {α β : Type u} {m : Type u → Type v} [Monad m] [LawfulMonad m] (x : OptionT m α) (y : OptionT m β) :
theorem OptionT.seqRight_eq {m : Type u_1 → Type u_2} {α β : Type u_1} [Monad m] [LawfulMonad m] (x : OptionT m α) (y : OptionT m β) :
instance OptionT.instLawfulMonad {m : Type u_1 → Type u_2} [Monad m] [LawfulMonad m] :
LawfulMonad (OptionT m)
@[simp]
theorem OptionT.run_seq {m : Type u_1 → Type u_2} {α β : Type u_1} [Monad m] [LawfulMonad m] (f : OptionT m (α → β)) (x : OptionT m α) :
@[simp]
theorem OptionT.run_seqLeft {m : Type u_1 → Type u_2} {α β : Type u_1} [Monad m] [LawfulMonad m] (x : OptionT m α) (y : OptionT m β) :
(x <* y).run = Option.elimM x.run (pure none) fun (x : α) => Option.map (Function.const β x) <$> y.run
@[simp]
theorem OptionT.run_seqRight {m : Type u_1 → Type u_2} {α β : Type u_1} [Monad m] [LawfulMonad m] (x : OptionT m α) (y : OptionT m β) :
Note that the MonadControl instance for OptionT is not monad-generic.
Option #
ReaderT #
@[simp]
instance ReaderT.instLawfulFunctor {m : Type u_1 → Type u_2} {ρ : Type u_1} [Monad m] [LawfulFunctor m] :
LawfulFunctor (ReaderT ρ m)
instance ReaderT.instLawfulApplicative {m : Type u_1 → Type u_2} {ρ : Type u_1} [Monad m] [LawfulApplicative m] :
LawfulApplicative (ReaderT ρ m)
instance ReaderT.instLawfulMonad {m : Type u_1 → Type u_2} {ρ : Type u_1} [Monad m] [LawfulMonad m] :
LawfulMonad (ReaderT ρ m)
Note that the MonadControl instance for ReaderT is not monad-generic.
StateRefT #
instance instLawfulMonadStateRefT' {m : Type → Type} {ω σ : Type} [Monad m] [LawfulMonad m] :
LawfulMonad (StateRefT' ω σ m)
StateT #
theorem StateT.run_bind_lift {m : Type u → Type u_1} {β α σ : Type u} [Monad m] [LawfulMonad m] (x : m α) (f : α → StateT σ m β) (s : σ) :
theorem StateT.seqRight_eq {m : Type u_1 → Type u_2} {σ α β : Type u_1} [Monad m] [LawfulMonad m] (x : StateT σ m α) (y : StateT σ m β) :
theorem StateT.seqLeft_eq {m : Type u_1 → Type u_2} {σ α β : Type u_1} [Monad m] [LawfulMonad m] (x : StateT σ m α) (y : StateT σ m β) :
instance StateT.instLawfulMonad {m : Type u_1 → Type u_2} {σ : Type u_1} [Monad m] [LawfulMonad m] :
LawfulMonad (StateT σ m)
Note that the MonadControl instance for StateT is not monad-generic.
EStateM #
@[simp]
@[simp]
@[simp]
@[simp]
theorem EStateM.run_bind {ε σ α β : Type u_1} {s : σ} (x : EStateM ε σ α) (f : α → EStateM ε σ β) :
(x >>= f).run s = match x.run s with
| Result.ok x s => (f x).run s
| Result.error e s => Result.error e s
@[simp]
theorem EStateM.run_adaptExcept {ε ε' σ α : Type u_1} (f : ε → ε') (x : EStateM ε σ α) (s : σ) :
(adaptExcept f x).run s = match x.run s with
| Result.ok x s => Result.ok x s
| Result.error e s => Result.error (f e) s