Documentation

Init.Control.ExceptCps

The Exception monad transformer using CPS style.

def ExceptCpsT (ε : Type u) (m : Type u → Type v) (α : Type u) :
Type (max (u + 1) v)
Instances For
    @[inline]
    def ExceptCpsT.run {m : Type u → Type u_1} {ε : Type u} {α : Type u} [Monad m] (x : ExceptCpsT ε m α) :
    m (Except ε α)
    Instances For
      @[inline]
      def ExceptCpsT.runK {m : Type u → Type u_1} {β : Type u} {ε : Type u} {α : Type u} (x : ExceptCpsT ε m α) (s : ε) (ok : αm β) (error : εm β) :
      m β
      Instances For
        @[inline]
        def ExceptCpsT.runCatch {m : Type u_1 → Type u_2} {α : Type u_1} [Monad m] (x : ExceptCpsT α m α) :
        m α
        Instances For
          @[always_inline]
          instance ExceptCpsT.instMonadExceptCpsT {ε : Type u_1} {m : Type u_1 → Type u_2} :
          instance ExceptCpsT.instMonadExceptOfExceptCpsT {ε : Type u_1} {m : Type u_1 → Type u_2} :
          @[inline]
          def ExceptCpsT.lift {m : Type u_1 → Type u_2} {α : Type u_1} {ε : Type u_1} [Monad m] (x : m α) :
          ExceptCpsT ε m α
          Instances For
            instance ExceptCpsT.instMonadLiftExceptCpsT {m : Type u_1 → Type u_2} {σ : Type u_1} [Monad m] :
            instance ExceptCpsT.instInhabitedExceptCpsT {ε : Type u_1} {m : Type u_1 → Type u_2} {α : Type u_1} [Inhabited ε] :
            @[simp]
            theorem ExceptCpsT.run_pure {m : Type u_1 → Type u_2} {ε : Type u_1} {α : Type u_1} {x : α} [Monad m] :
            @[simp]
            theorem ExceptCpsT.run_lift {m : Type u → Type u_1} {α : Type u} {ε : Type u} [Monad m] (x : m α) :
            @[simp]
            theorem ExceptCpsT.run_throw {m : Type u_1 → Type u_2} {ε : Type u_1} {β : Type u_1} {e : ε} [Monad m] :
            @[simp]
            theorem ExceptCpsT.run_bind_lift {m : Type u_1 → Type u_2} {α : Type u_1} {ε : Type u_1} {β : Type u_1} [Monad m] (x : m α) (f : αExceptCpsT ε m β) :
            @[simp]
            theorem ExceptCpsT.run_bind_throw {m : Type u_1 → Type u_2} {ε : Type u_1} {α : Type u_1} {β : Type u_1} [Monad m] (e : ε) (f : αExceptCpsT ε m β) :
            @[simp]
            theorem ExceptCpsT.runCatch_pure {m : Type u_1 → Type u_2} {α : Type u_1} {x : α} [Monad m] :
            @[simp]
            theorem ExceptCpsT.runCatch_lift {m : Type u → Type u_1} {α : Type u} [Monad m] [LawfulMonad m] (x : m α) :
            @[simp]
            theorem ExceptCpsT.runCatch_throw {m : Type u_1 → Type u_2} {α : Type u_1} {a : α} [Monad m] :
            @[simp]
            theorem ExceptCpsT.runCatch_bind_lift {m : Type u_1 → Type u_2} {α : Type u_1} {β : Type u_1} [Monad m] (x : m α) (f : αExceptCpsT β m β) :
            @[simp]
            theorem ExceptCpsT.runCatch_bind_throw {m : Type u_1 → Type u_2} {β : Type u_1} {α : Type u_1} [Monad m] (e : β) (f : αExceptCpsT β m β) :