feat: add getOp for a[i] notation
This commit is contained in:
parent
9d4f2bc4a8
commit
d551ff653d
4 changed files with 12 additions and 0 deletions
|
|
@ -93,6 +93,9 @@ if h : i < a.size then some (a.get ⟨i, h⟩) else none
|
|||
def getD (a : Array α) (i : Nat) (v₀ : α) : α :=
|
||||
if h : i < a.size then a.get ⟨i, h⟩ else v₀
|
||||
|
||||
def getOp [Inhabited α] (self : Array α) (idx : Nat) : α :=
|
||||
self.get! idx
|
||||
|
||||
@[extern "lean_array_fset"]
|
||||
def set (a : Array α) (i : @& Fin a.size) (v : α) : Array α :=
|
||||
{ sz := a.sz,
|
||||
|
|
|
|||
|
|
@ -154,6 +154,9 @@ match m.find a with
|
|||
| some b => b
|
||||
| none => panic! "key is not in the map"
|
||||
|
||||
@[inline] def getOp (self : HashMap α β) (idx : α) : Option β :=
|
||||
self.find idx
|
||||
|
||||
@[inline] def contains (m : HashMap α β) (a : α) : Bool :=
|
||||
match m with
|
||||
| ⟨ m, _ ⟩ => m.contains a
|
||||
|
|
|
|||
|
|
@ -68,6 +68,9 @@ if i >= t.tailOff then
|
|||
else
|
||||
getAux t.root (USize.ofNat i) t.shift
|
||||
|
||||
def getOp [Inhabited α] (self : PersistentArray α) (idx : Nat) : α :=
|
||||
self.get! idx
|
||||
|
||||
partial def setAux : PersistentArrayNode α → USize → USize → α → PersistentArrayNode α
|
||||
| node cs, i, shift, a =>
|
||||
let j := div2Shift i shift;
|
||||
|
|
|
|||
|
|
@ -155,6 +155,9 @@ partial def findAux [HasBeq α] : Node α β → USize → α → Option β
|
|||
def find [HasBeq α] [Hashable α] : PersistentHashMap α β → α → Option β
|
||||
| { root := n, .. }, k => findAux n (hash k) k
|
||||
|
||||
@[inline] def getOp [HasBeq α] [Hashable α] (self : PersistentHashMap α β) (idx : α) : Option β :=
|
||||
self.find idx
|
||||
|
||||
@[inline] def findD [HasBeq α] [Hashable α] (m : PersistentHashMap α β) (a : α) (b₀ : β) : β :=
|
||||
(m.find a).getD b₀
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue