Iter
Reference for mo:core/Iter in the core library.
Iter<T> is the standard { next : () -> ?T } iterator shape. The Spec
module gives ghost predicates for membership-style contracts, while runtime
iteration still consumes mutable iterator state.
Import
mo:core/Iter
Status
- Runtime module
Public API
Types
Iter
Modules
Spec
Functions
empty<T>() : Iter<T>
Constructs the empty value for this module's data structure.
Contract
ensures forall<T>(pure func (k : T) : Bool = not Spec.contains<T>(result, k));
Use when: code or specifications need this operation with the documented contract.
singleton<T>(value : T) : Iter<T>
Constructs a value containing exactly the supplied element or entry.
Contract
ensures Spec.contains<T>(result, value);
ensures forall<T>(pure func (k : T) : Bool = Spec.contains<T>(result, k) ==> k == value);
ensures forall<T>(pure func (k : T) : Bool = (k == value) ==> Spec.contains<T>(result, k));
Use when: code or specifications need this operation with the documented contract.
reverse<T>(iter : Iter<T>) : Iter<T>
Materializes an iterator in reverse order.
Contract
ensures forall<T>(pure func (k : T) : Bool =
Spec.contains<T>(result, k) ==> Spec.contains<T>(iter, k));
ensures forall<T>(pure func (k : T) : Bool =
Spec.contains<T>(iter, k) ==> Spec.contains<T>(result, k));
Use when: code or specifications need this operation with the documented contract.
Spec Module
Spec Functions
contains<T>(iter : Types.Iter<T>, value : T) : Bool
Provides a ghost/spec-only abstraction for contracts and proofs.
Use when: Use in contracts, ghost code, or lemmas when the runtime value needs an abstract proof model.
forall<T>(pred : T -> Bool) : Bool
Provides a ghost/spec-only abstraction for contracts and proofs.
Use when: Use in contracts, ghost code, or lemmas when the runtime value needs an abstract proof model.
Summary
- Runtime module under
mo:core/Iter. - Exposes 3 public functions.
- Includes 2 spec helpers in
Spec.