Documentation

Lean.Data.KVMap

@[export lean_data_value_beq]
Equations
  • a.beqExp b = (a == b)
@[export lean_mk_bool_data_value]
Equations
@[export lean_data_value_bool]
Equations
structure Lean.KVMap :

A key-value map. We use it to represent user-selected options and Expr.mdata.

Remark: we do not use RBMap here because we need to manipulate KVMap objects in C++ and RBMap is implemented in Lean. So, we use just a List until we can generate C++ code from Lean code.

Instances For
Equations
Equations
Equations
Equations
  • { entries := m }.isEmpty = m.isEmpty
Equations
  • m.size = m.entries.length
Equations
Equations
def Lean.KVMap.findD (m : KVMap) (k : Name) (d₀ : DataValue) :
Equations
  • m.findD k d₀ = (m.find k).getD d₀
Equations
Equations
Equations
  • m.contains n = (m.find n).isSome

Erase an entry from the map

Equations
def Lean.KVMap.getString (m : KVMap) (k : Name) (defVal : String := "") :
Equations
def Lean.KVMap.getNat (m : KVMap) (k : Name) (defVal : Nat := 0) :
Equations
def Lean.KVMap.getInt (m : KVMap) (k : Name) (defVal : Int := 0) :
Equations
def Lean.KVMap.getBool (m : KVMap) (k : Name) (defVal : Bool := false) :
Equations
def Lean.KVMap.getName (m : KVMap) (k : Name) (defVal : Name := Name.anonymous) :
Equations
Equations
def Lean.KVMap.setString (m : KVMap) (k : Name) (v : String) :
Equations
def Lean.KVMap.setNat (m : KVMap) (k : Name) (v : Nat) :
Equations
def Lean.KVMap.setInt (m : KVMap) (k : Name) (v : Int) :
Equations
def Lean.KVMap.setBool (m : KVMap) (k : Name) (v : Bool) :
Equations
def Lean.KVMap.setName (m : KVMap) (k v : Name) :
Equations
def Lean.KVMap.setSyntax (m : KVMap) (k : Name) (v : Syntax) :
Equations

Update a String entry based on its current value.

Equations
def Lean.KVMap.updateNat (m : KVMap) (k : Name) (f : NatNat) :

Update a Nat entry based on its current value.

Equations
def Lean.KVMap.updateInt (m : KVMap) (k : Name) (f : IntInt) :

Update an Int entry based on its current value.

Equations
def Lean.KVMap.updateBool (m : KVMap) (k : Name) (f : BoolBool) :

Update a Bool entry based on its current value.

Equations
def Lean.KVMap.updateName (m : KVMap) (k : Name) (f : NameName) :

Update a Name entry based on its current value.

Equations

Update a Syntax entry based on its current value.

Equations
@[inline]
def Lean.KVMap.forIn {δ : Type w} {m : Type w → Type w'} [Monad m] (kv : KVMap) (init : δ) (f : Name × DataValueδm (ForInStep δ)) :
m δ
Equations
  • kv.forIn init f = forIn kv.entries init f
Equations
Equations
def Lean.KVMap.mergeBy (mergeFn : NameDataValueDataValueDataValue) (l r : KVMap) :
Equations
  • One or more equations did not get rendered due to their size.
def Lean.KVMap.eqv (m₁ m₂ : KVMap) :
Equations
  • m₁.eqv m₂ = (m₁.subset m₂ && m₂.subset m₁)
@[inline]
def Lean.KVMap.get? {α : Type} [Value α] (m : KVMap) (k : Name) :
Equations
@[inline]
def Lean.KVMap.get {α : Type} [Value α] (m : KVMap) (k : Name) (defVal : α) :
α
Equations
  • m.get k defVal = (m.get? k).getD defVal
@[inline]
def Lean.KVMap.set {α : Type} [Value α] (m : KVMap) (k : Name) (v : α) :
Equations
@[inline]
def Lean.KVMap.update {α : Type} [Value α] (m : KVMap) (k : Name) (f : Option αOption α) :
Equations
  • m.update k f = match f (m.get? k) with | some a => m.set k a | none => m.erase k
Equations
Equations
Equations
Equations
Equations
Equations
  • One or more equations did not get rendered due to their size.
Equations
  • One or more equations did not get rendered due to their size.