f"…" Hole Is Handed Over ThereStatus: Accepted
Date: September 26, 2026
Answers: ADR-282’s a value put into a list by push,
insert or m[k] = v written inside a hole, the last of #200
Refines: ADR-282 D14 and ADR-282 D5, which kept
a position a hole puts a value into text of its own
Related: ADR-309 (a hole is code)
A hole is code, and every reader parses it again from the literal’s text: the
checker, the emitter, the pass that decides text tiers. That pass hands a
value into a mixed position by rewriting the program (value.into_either()),
and a hole is not in the program as expressions, so it had nothing to rewrite.
A position a hole put a value into therefore stayed text of its own, and that
was not only a refusal in the hole: it refused the lines outside the hole
that put a view into the same list or map.
for line in text.lines() { m[line] = line.len() } // refused, because of
println(f"{m.insert(text.trim(), 1) ?? 0}") // this hole
The tier pass walks each hole with its text. Where a value inside it goes into
a mixed position, it records the hole’s text, the value’s shape (the
argument_shape the checker and the emitter already key their answers by),
and the method it is handed over with: into_either, into_either_maybe, or
one of the either_… adapters before a collect. literal_expressions, the
one function a reader parses a hole with, and the emitter’s own hole writer
apply those wraps as they parse. So every reader sees the same code, and the
position can be mixed like any other.
The shape is how a value is found again in a fresh parse. Two values written
the same way in one hole are handed over alike, which is right exactly when
they go to the same position and harmless otherwise: an EitherText goes
where a String or a view could, since the checker reads it as text of its
own (ADR-282 D15) and a view position then refuses, in this language’s words.
A template’s holes (html { … }, ADR-017), which reach the readers by another
route. A position one of those puts a view into stays text of its own.
What is left of the wall a hole made is ADR-282 D22’s rule for a published position, which is decided rather than unbuilt.