Documentation

Init.System.ST

noncomputable def EST (ε : Type) (σ : Type) :
TypeType
Equations
@[inline]
abbrev ST (σ : Type) :
TypeType
Equations
instance instMonadEST (ε : Type) (σ : Type) :
Monad (EST ε σ)
Equations
instance instMonadExceptOfEST (ε : Type) (σ : Type) :
MonadExceptOf ε (EST ε σ)
Equations
instance instInhabitedEST {ε : Type} {σ : Type} {α : Type} [inst : Inhabited ε] :
Inhabited (EST ε σ α)
Equations
instance instMonadST (σ : Type) :
Monad (ST σ)
Equations
class STWorld (σ : outParam Type) (m : TypeType) :
Type
Instances
instance instSTWorld {σ : outParam Type} {m : TypeType} {n : TypeType} [inst : MonadLift m n] [inst : STWorld σ m] :
STWorld σ n
Equations
  • instSTWorld = { }
instance instSTWorldEST {ε : Type} {σ : outParam Type} :
STWorld σ (EST ε σ)
Equations
  • instSTWorldEST = { }
@[noinline, nospecialize]
def runEST {ε : Type} {α : Type} (x : (σ : Type) → EST ε σ α) :
Except ε α
Equations
@[noinline, nospecialize]
def runST {α : Type} (x : (σ : Type) → ST σ α) :
α
Equations
instance instMonadLiftSTEST {ε : Type} {σ : Type} :
MonadLift (ST σ) (EST ε σ)
Equations
structure ST.Ref (σ : Type) (α : Type) :
Type
noncomputable instance ST.instNonemptyRef {σ : Type} {α : Type} [s : Nonempty α] :
Equations
@[extern lean_st_mk_ref]
constant ST.Prim.mkRef {σ : Type} {α : Type} (a : α) :
ST σ (ST.Ref σ α)
@[extern lean_st_ref_get]
constant ST.Prim.Ref.get {σ : Type} {α : Type} (r : ST.Ref σ α) :
ST σ α
@[extern lean_st_ref_set]
constant ST.Prim.Ref.set {σ : Type} {α : Type} (r : ST.Ref σ α) (a : α) :
ST σ Unit
@[extern lean_st_ref_swap]
constant ST.Prim.Ref.swap {σ : Type} {α : Type} (r : ST.Ref σ α) (a : α) :
ST σ α
@[extern lean_st_ref_take]
unsafe constant ST.Prim.Ref.take {σ : Type} {α : Type} (r : ST.Ref σ α) :
ST σ α
@[extern lean_st_ref_ptr_eq]
constant ST.Prim.Ref.ptrEq {σ : Type} {α : Type} (r1 : ST.Ref σ α) (r2 : ST.Ref σ α) :
ST σ Bool
@[inline]
unsafe def ST.Prim.Ref.modifyUnsafe {σ : Type} {α : Type} (r : ST.Ref σ α) (f : αα) :
ST σ Unit
Equations
@[inline]
unsafe def ST.Prim.Ref.modifyGetUnsafe {σ : Type} {α : Type} {β : Type} (r : ST.Ref σ α) (f : αβ × α) :
ST σ β
Equations
@[implementedBy ST.Prim.Ref.modifyUnsafe]
noncomputable def ST.Prim.Ref.modify {σ : Type} {α : Type} (r : ST.Ref σ α) (f : αα) :
ST σ Unit
Equations
@[implementedBy ST.Prim.Ref.modifyGetUnsafe]
noncomputable def ST.Prim.Ref.modifyGet {σ : Type} {α : Type} {β : Type} (r : ST.Ref σ α) (f : αβ × α) :
ST σ β
Equations
@[inline]
def ST.mkRef {σ : Type} {m : TypeType} [inst : MonadLiftT (ST σ) m] {α : Type} (a : α) :
m (ST.Ref σ α)
Equations
@[inline]
def ST.Ref.get {σ : Type} {m : TypeType} [inst : MonadLiftT (ST σ) m] {α : Type} (r : ST.Ref σ α) :
m α
Equations
@[inline]
def ST.Ref.set {σ : Type} {m : TypeType} [inst : MonadLiftT (ST σ) m] {α : Type} (r : ST.Ref σ α) (a : α) :
Equations
@[inline]
def ST.Ref.swap {σ : Type} {m : TypeType} [inst : MonadLiftT (ST σ) m] {α : Type} (r : ST.Ref σ α) (a : α) :
m α
Equations
@[inline]
unsafe def ST.Ref.take {σ : Type} {m : TypeType} [inst : MonadLiftT (ST σ) m] {α : Type} (r : ST.Ref σ α) :
m α
Equations
@[inline]
def ST.Ref.ptrEq {σ : Type} {m : TypeType} [inst : MonadLiftT (ST σ) m] {α : Type} (r1 : ST.Ref σ α) (r2 : ST.Ref σ α) :
Equations
@[inline]
def ST.Ref.modify {σ : Type} {m : TypeType} [inst : MonadLiftT (ST σ) m] {α : Type} (r : ST.Ref σ α) (f : αα) :
Equations
@[inline]
def ST.Ref.modifyGet {σ : Type} {m : TypeType} [inst : MonadLiftT (ST σ) m] {α : Type} {β : Type} (r : ST.Ref σ α) (f : αβ × α) :
m β
Equations