Every system that serves human intent must be able to identify "which one" and recognize "the same one."
Title: Pre-RFC: List and VariableList: identity-based storage primitives with interning
Every system that accepts input from humans operates on two concepts that are currently absent from core:
- A way to store and retrieve values by a stable integer identity (1-based ordinal, where 0 is the null sentinel — the only meaningful null for a computer)
- A way to recognize that two inputs are the same value — interning
slice and Vec are memory representations. They have no notion of identity or equality across contexts. You cannot intern a Vec. This is a gap, not a stylistic choice.
I have been using two primitives to fill this gap:
List<T> — fixed-width unit store, addressed by usize identity VariableList<T> — variable-width unit store, same identity model, with interning support
Both are small enough to copy into a project without installing a crate.
Source: context-engine/src/list.rs at main · animagram-jp/context-engine · GitHub
These two concepts — ordinal identity and value interning — are not primitives in the sense of bits or ordering. But they are unavoidable the moment a computer does anything for a human. Every system that serves human intent must identify "which one" and recognize "the same one." That is not a library concern. It belongs in core.
I am not proposing specific API surface yet. I want to know: is this a gap others have felt? And is interning as a general primitive — not just for strings — something worth pursuing in core?
English is not my first language — please forgive any awkward phrasing.
Thank you for reading.
Discussion in the ATmosphere