nustack
ReferenceNu STDmem

refs.list

Dict sequence reference: ordered container backed by nested list.

Module nustd.mem.refs.list.

Dict sequence reference: ordered container backed by nested list.

NameSortCallMeaning
ListRefrefListRef(address, item_type, item_value_type, parent_ref=None, owner_shape=None)A sequence slot in the dict substrate, holding one plain list of values.

ListRef

A sequence slot in the dict substrate, holding one plain list of values.

ListRef(address, item_type, item_value_type, parent_ref=None, owner_shape=None)

Path nustd.mem.ListRef. Kind Ref, sort ref, cardinality scalar.

Subscripting with an int descends rather than reads: ref[i] is an ItemRef at that index inside the stored list, settable and erasable on its own. A slice instead routes to the sequence-level slice call and yields a new list.

Notes

  • The stored value is an ordinary list and a read hands back that live object, so a mutation through the ref is visible to anyone else holding it.
  • In-place calls read the container first and do nothing when the slot is absent, so set an empty list before the first append.
  • The declared element type is metadata; nothing coerces or rejects what is written.

Example

class Port(nu.Shape):
    tags = nustd.mem.ListRef.slot(str)
data = {"tags": ["a"]}
ctx = nu.Context().bind(dict, data, Port)
_ = nu.run(Port.tags.append("b"), ctx)
nu.run(Port.tags[1], ctx)[0]
data
'b'
{'tags': ['a', 'b']}

Inherited methods

From nu.forms.collections.abc.sequence.MutableSequenceForm:

CallBuildsMeaning
.append(value)AnyAppend value to the end of self.
.extend(other)AnyExtend self with the elements of other, in order.
.insert(index, value)AnyInsert value at index, shifting later elements right.
.pop(index=-1)ElementResultTRemove and return the element at index.
.del_at(index)AnyRemove the element at index.
.remove(value)AnyRemove the first occurrence of value.
.reverse()AnyReverse self in place.
.sort()AnySort self in place, ascending, using the elements' natural order.
.copy()CollectionResultTShallow copy of self: a new sequence with the same elements.
.clear()AnyRemove every element from self.

From nu.domains.shape.refs.sequence.SequenceRef:

CallBuildsMeaning
a[key]ItemResultTInt index navigates to the child Ref; slice routes to the form-level slice op.

From nu.forms.collections.abc.sequence.SequenceForm:

CallBuildsMeaning
.first_elem()ElementResultTFirst element of self.
.last_elem()ElementResultTLast element of self.
.index(value)IntLowest index in self where value is found, searching from the left.
.count(value)IntCount of occurrences of value in self.
.reversed()CollectionResultTSelf walked back to front, as a stream.

From nu.forms.collections.abc.collection.CollectionForm:

CallBuildsMeaning
.extract()objectMaterialise the full subtree rooted at self.

From nu.forms.collections.abc.sized.SizedForm:

CallBuildsMeaning
.len()IntLength of self.

From nu.forms.collections.abc.iterable.IterableForm:

CallBuildsMeaning
iter(a)Iterator[ElementT]Open self into a lazy iterator stream (Python's iter).

From nu.forms.collections.abc.container.ContainerForm:

CallBuildsMeaning
.contains(item)BoolWhether item is a member of self.

From nu.forms.collections.abc.sliceable.SliceableForm:

CallBuildsMeaning
.slice(start, stop, step=None)ResultTSlice of self from start to stop, stepping by step.

From nu.domains.shape.forms.collection.MutableCollectionForm:

CallBuildsMeaning
.set(value)SetCmdBuild a SetCmd.
.erase()EraseBuild an Erase.
.init(value)IfDoSet value iff the collection is currently missing.

From nu.domains.shape.forms.collection.CollectionForm:

CallBuildsMeaning
.exists()ExistsBuild an Exists query.
.missing()MissingBuild a Missing query.

From nu.lang.forms.Form:

CallBuildsMeaning
.is_empty()BoolTrue if this Form yields the EMPTY sentinel.
.is_invalid()BoolTrue if this Form yields the INVALID sentinel.
.is_sentinel()BoolTrue if this Form yields either sentinel (EMPTY or INVALID).
.not_empty()BoolTrue if this Form does not yield EMPTY.
.not_invalid()BoolTrue if this Form does not yield INVALID.

On this page