PersistentHashMap iterator #
This module provides an iterator for Lean.PersistentHashMap that is accessible via
Lean.PersistentHashMap.iter.
A zipper for traversing a PersistentHashMap. This is an inductive structure
representing the remaining key-value pairs to yield.
- done
{α : Type u}
{β : Type v}
: Zipper α β
No more elements to yield.
- consEntries
{α : Type u}
{β : Type v}
: Subarray (Entry α β (Node α β)) → Zipper α β → Zipper α β
A frame of entries from a trie node.
- consCollision
{α : Type u}
{β : Type v}
(keys : Subarray α)
(vals : Subarray β)
: Std.Slice.size keys = Std.Slice.size vals → Zipper α β → Zipper α β
A frame of key-value pairs from a collision node.
Instances For
def
Lean.PersistentHashMap.Zipper.prependNode
{α : Type u_1}
{β : Type u_2}
(node : Node α β)
(z : Zipper α β)
:
Zipper α β
Equations
- One or more equations did not get rendered due to their size.
- Lean.PersistentHashMap.Zipper.prependNode (Lean.PersistentHashMap.Node.entries es) z = Lean.PersistentHashMap.Zipper.consEntries es.toSubarray z
Instances For
@[implicit_reducible]
instance
Lean.PersistentHashMap.instIterator
{α : Type u_1}
{β : Type u_2}
:
Std.Iterator (Zipper α β) Id (α × β)
Equations
- One or more equations did not get rendered due to their size.
@[irreducible]
Counts the total number of entries reachable from a node, including nested children.
Equations
- (Lean.PersistentHashMap.Node.entries es).measure = Lean.PersistentHashMap.Node.measure.measureEntries✝ es 0
- (Lean.PersistentHashMap.Node.collision keys vals hsz).measure = vals.size
Instances For
def
Lean.PersistentHashMap.Entry.measure
{α : Type u_1}
{β : Type u_2}
(entry : Entry α β (Node α β))
:
Equations
Instances For
def
Lean.PersistentHashMap.subarrayMeasure
{α : Type u_1}
{β : Type u_2}
(es : Subarray (Entry α β (Node α β)))
:
Counts entries remaining in a subarray, including nested children.
Equations
- Lean.PersistentHashMap.subarrayMeasure es = (List.map (fun (x : Lean.PersistentHashMap.Entry α β (Lean.PersistentHashMap.Node α β)) => x.measure) (Std.Slice.toList es)).sum
Instances For
Counts the total remaining work in a zipper, including entries nested in child nodes.
Equations
- Lean.PersistentHashMap.Zipper.done.measure = 0
- (Lean.PersistentHashMap.Zipper.consEntries es z').measure = Lean.PersistentHashMap.subarrayMeasure es + z'.measure + 1
- (Lean.PersistentHashMap.Zipper.consCollision keys vals hsz z').measure = Std.Slice.size vals + z'.measure + 1
Instances For
instance
Lean.PersistentHashMap.instFinite
{α : Type u_1}
{β : Type u_2}
:
Std.Iterators.Finite (Zipper α β) Id
@[implicit_reducible, inline]
instance
Lean.PersistentHashMap.instIteratorLoop
{α : Type u_1}
{β : Type u_2}
{n : Type u_3 → Type u_4}
[Monad n]
:
Std.IteratorLoop (Zipper α β) Id n
@[inline]
def
Lean.PersistentHashMap.iter
{α : Type u_1}
{β : Type u_2}
[BEq α]
[Hashable α]
(map : PersistentHashMap α β)
:
Returns a finite iterator over the key-value pairs of the given PersistentHashMap.
The iteration order is unspecified.
Termination properties:
Finiteinstance: alwaysProductiveinstance: always
Equations
- map.iter = { internalState := Lean.PersistentHashMap.Zipper.prependNode map.root Lean.PersistentHashMap.Zipper.done }