File: .lake/packages/lean4/src/lean/lake/Lake/Util/EquipT.lean

full_name: Lake.EquipT
code: /--
A monad transformer that equips a monad with a value.
This is a generalization of `ReaderT` where the value is not
necessarily directly readable through the monad.
-/
def EquipT (ρ : Type u) (m : Type v → Type w) (α : Type v) 
goal: Type (max u w)

full_name: Lake.instInhabitedEquipT
code: instance {α : Type v} [Inhabited (m α)] : Inhabited (EquipT ρ m α) 
goal: Inhabited (Lake.EquipT ρ m α)

full_name: Lake.EquipT.run
code: @[inline] protected
def run {α : Type v} (self : EquipT ρ m α) (r : ρ) : m α 
goal: m α

full_name: Lake.EquipT.map
code: @[inline] protected
def map [Functor m] {α β : Type v} (f : α → β) (self : EquipT ρ m α) : EquipT ρ m β 
goal: Lake.EquipT ρ m β

full_name: Lake.EquipT.instFunctor
code: instance [Functor m] : Functor (EquipT ρ m) 
goal: Functor (Lake.EquipT ρ m)

full_name: Lake.EquipT.pure
code: @[inline] protected
def pure [Pure m] {α : Type v} (a : α) : EquipT ρ m α 
goal: Lake.EquipT ρ m α

full_name: Lake.EquipT.instPure
code: instance [Pure m] : Pure (EquipT ρ m) 
goal: Pure (Lake.EquipT ρ m)

full_name: Lake.EquipT.compose
code: @[inline] protected
def compose {α₁ α₂ β : Type v} (f : m α₁ → (Unit → m α₂) → m β) (x₁ : EquipT ρ m α₁) (x₂ : Unit → EquipT ρ m α₂) : EquipT ρ m β 
goal: Lake.EquipT ρ m β

full_name: Lake.EquipT.seq
code: @[inline] protected
def seq [Seq m] {α β : Type v} : EquipT ρ m (α → β) → (Unit → EquipT ρ m α) → EquipT ρ m β 
goal: Lake.EquipT ρ m (α → β) → (Unit → Lake.EquipT ρ m α) → Lake.EquipT ρ m β

full_name: Lake.EquipT.instSeq
code: instance [Seq m] : Seq (EquipT ρ m) 
goal: Seq (Lake.EquipT ρ m)

full_name: Lake.EquipT.instApplicative
code: instance [Applicative m] : Applicative (EquipT ρ m)  
goal: Applicative (Lake.EquipT ρ m)

full_name: Lake.EquipT.bind
code: @[inline] protected
def bind [Bind m] {α β : Type v} (self : EquipT ρ m α) (f : α → EquipT ρ m β) : EquipT ρ m β 
goal: Lake.EquipT ρ m β

full_name: Lake.EquipT.instBind
code: instance [Bind m] : Bind (EquipT ρ m) 
goal: Bind (Lake.EquipT ρ m)

full_name: Lake.EquipT.instMonad
code: instance [Monad m] : Monad (EquipT ρ m) 
goal: Monad (Lake.EquipT ρ m)

full_name: Lake.EquipT.lift
code: @[inline] protected
def lift {α : Type v} (t : m α) : EquipT ρ m α 
goal: Lake.EquipT ρ m α

full_name: Lake.EquipT.instMonadLift
code: instance : MonadLift m (EquipT ρ m) 
goal: MonadLift m (Lake.EquipT ρ m)

full_name: Lake.EquipT.instMonadFunctor
code: instance : MonadFunctor m (EquipT ρ m) 
goal: MonadFunctor m (Lake.EquipT ρ m)

full_name: Lake.EquipT.failure
code: @[inline] protected
def failure [Alternative m] {α : Type v} : EquipT ρ m α 
goal: Lake.EquipT ρ m α

full_name: Lake.EquipT.orElse
code: @[inline] protected
def orElse [Alternative m] {α : Type v} : EquipT ρ m α → (Unit → EquipT ρ m α) → EquipT ρ m α 
goal: Lake.EquipT ρ m α → (Unit → Lake.EquipT ρ m α) → Lake.EquipT ρ m α

full_name: Lake.EquipT.instAlternative
code: instance [Alternative m] : Alternative (EquipT ρ m) 
goal: Alternative (Lake.EquipT ρ m)

full_name: Lake.EquipT.throw
code: @[inline] protected
def throw {ε : Type v} [MonadExceptOf ε m] {α : Type v} (e : ε) : EquipT ρ m α  
goal: Lake.EquipT ρ m α

full_name: Lake.EquipT.tryCatch
code: @[inline] protected
def tryCatch {ε : Type v} [MonadExceptOf ε m] {α : Type v} (self : EquipT ρ m α) (c : ε → EquipT ρ m α) : EquipT ρ m α 
goal: Lake.EquipT ρ m α

full_name: Lake.EquipT.instMonadExceptOf
code: instance (ε) [MonadExceptOf ε m] : MonadExceptOf ε (EquipT ρ m) 
goal: MonadExceptOf ε (Lake.EquipT ρ m)

full_name: Lake.EquipT.instMonadFinallyOfMonad
code: @[always_inline]
instance [MonadFinally m] [Monad m] : MonadFinally (EquipT ρ m) 
goal: MonadFinally (Lake.EquipT ρ m)