Documentation

Lake.Util.EquipT

def Lake.EquipT (ρ : Type u) (m : Type v → Type w) (α : Type v) :
Type (max u w)

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.

Equations
    Instances For
      instance Lake.instInhabitedEquipT {ρ : Type u} {m : Type v → Type w} {α : Type v} [Inhabited (m α)] :
      Inhabited (EquipT ρ m α)
      Equations
        @[inline]
        def Lake.EquipT.run {ρ : Type u} {m : Type v → Type w} {α : Type v} (self : EquipT ρ m α) (r : ρ) :
        m α
        Equations
          Instances For
            @[inline]
            def Lake.EquipT.map {ρ : Type u} {m : Type v → Type w} [Functor m] {α β : Type v} (f : αβ) (self : EquipT ρ m α) :
            EquipT ρ m β
            Equations
              Instances For
                instance Lake.EquipT.instFunctor {ρ : Type u} {m : Type v → Type w} [Functor m] :
                Equations
                  @[inline]
                  def Lake.EquipT.pure {ρ : Type u} {m : Type v → Type w} [Pure m] {α : Type v} (a : α) :
                  EquipT ρ m α
                  Equations
                    Instances For
                      instance Lake.EquipT.instPure {ρ : Type u} {m : Type v → Type w} [Pure m] :
                      Pure (EquipT ρ m)
                      Equations
                        @[inline]
                        def Lake.EquipT.compose {ρ : Type u} {m : Type v → Type w} {α₁ α₂ β : Type v} (f : m α₁(Unitm α₂)m β) (x₁ : EquipT ρ m α₁) (x₂ : UnitEquipT ρ m α₂) :
                        EquipT ρ m β
                        Equations
                          Instances For
                            @[inline]
                            def Lake.EquipT.seq {ρ : Type u} {m : Type v → Type w} [Seq m] {α β : Type v} :
                            EquipT ρ m (αβ)(UnitEquipT ρ m α)EquipT ρ m β
                            Equations
                              Instances For
                                instance Lake.EquipT.instSeq {ρ : Type u} {m : Type v → Type w} [Seq m] :
                                Seq (EquipT ρ m)
                                Equations
                                  instance Lake.EquipT.instApplicative {ρ : Type u} {m : Type v → Type w} [Applicative m] :
                                  Equations
                                    @[inline]
                                    def Lake.EquipT.bind {ρ : Type u} {m : Type v → Type w} [Bind m] {α β : Type v} (self : EquipT ρ m α) (f : αEquipT ρ m β) :
                                    EquipT ρ m β
                                    Equations
                                      Instances For
                                        instance Lake.EquipT.instBind {ρ : Type u} {m : Type v → Type w} [Bind m] :
                                        Bind (EquipT ρ m)
                                        Equations
                                          instance Lake.EquipT.instMonad {ρ : Type u} {m : Type v → Type w} [Monad m] :
                                          Monad (EquipT ρ m)
                                          Equations
                                            @[inline]
                                            def Lake.EquipT.lift {ρ : Type u} {m : Type v → Type w} {α : Type v} (t : m α) :
                                            EquipT ρ m α
                                            Equations
                                              Instances For
                                                instance Lake.EquipT.instMonadLift {ρ : Type u} {m : Type v → Type w} :
                                                MonadLift m (EquipT ρ m)
                                                Equations
                                                  instance Lake.EquipT.instMonadFunctor {ρ : Type u} {m : Type v → Type w} :
                                                  Equations
                                                    @[inline]
                                                    def Lake.EquipT.failure {ρ : Type u} {m : Type v → Type w} [Alternative m] {α : Type v} :
                                                    EquipT ρ m α
                                                    Equations
                                                      Instances For
                                                        @[inline]
                                                        def Lake.EquipT.orElse {ρ : Type u} {m : Type v → Type w} [Alternative m] {α : Type v} :
                                                        EquipT ρ m α(UnitEquipT ρ m α)EquipT ρ m α
                                                        Equations
                                                          Instances For
                                                            instance Lake.EquipT.instAlternative {ρ : Type u} {m : Type v → Type w} [Alternative m] :
                                                            Equations
                                                              @[inline]
                                                              def Lake.EquipT.throw {ρ : Type u} {m : Type v → Type w} {ε : Type v} [MonadExceptOf ε m] {α : Type v} (e : ε) :
                                                              EquipT ρ m α
                                                              Equations
                                                                Instances For
                                                                  @[inline]
                                                                  def Lake.EquipT.tryCatch {ρ : Type u} {m : Type v → Type w} {ε : Type v} [MonadExceptOf ε m] {α : Type v} (self : EquipT ρ m α) (c : εEquipT ρ m α) :
                                                                  EquipT ρ m α
                                                                  Equations
                                                                    Instances For
                                                                      instance Lake.EquipT.instMonadExceptOf {ρ : Type u} {m : Type v → Type w} (ε : Type v) [MonadExceptOf ε m] :
                                                                      Equations
                                                                        @[always_inline]
                                                                        instance Lake.EquipT.instMonadFinallyOfMonad {ρ : Type u} {m : Type v → Type w} [MonadFinally m] [Monad m] :
                                                                        Equations