Late to this thread, and I want to put some floor under it, because "has this been done before" is a question that can only be answered badly. Nobody can prove an absence, so the affirmative answer is always unfalsifiable — and the negative costs one citation. A single person saying "Mathematica has had this since 2015" takes down a "first ever" claim and everything attached to it.
So let me go through the four claims with the precedents I can actually name, and then say what I think survives. The parts that survive are narrower than what's in this thread and much harder to knock over.
VOID / vanishing expressions
This is, quite literally, the first general-purpose, reified, zero-impact control form I've seen in mainstream or fringe languages.
This one has clear prior art and it's the most exposed claim in the thread.
- Mathematica's
Nothing (10.2, 2015) is a first-class symbol that disappears from lists. {1, Nothing, 2} evaluates to {1, 2}. You can store it, pass it, return it from a function. That is a general-purpose reified vanishing value, in a mainstream system, a decade old.
- Perl's empty list flattens in list context:
(1, (), 2) is (1, 2).
- Icon (1977) has expression failure as an outcome distinct from any value, propagating through surrounding expressions rather than producing one. Different mechanism, same refusal to model absence as a value.
What's actually distinct in Ren-C: Nothing vanishes during list construction; VOID vanishes in expression position during evaluation, which is what makes 1 + 2 elide print "x" work. And it's a rung on the same ladder as everything else rather than a special-cased symbol. That's a real difference. It is not "first ever," and claiming so invites the correction.
PACK! and decay
The thread doesn't mention the nearest precedent, and it's a big one.
Common Lisp multiple values. (values 1 2) in a single-value context yields 1. (multiple-value-bind (a b) ...) is your SET-BLOCK!. Callers who don't care never know. That is decay, shipped in 1984.
The difference is precise and worth stating exactly, because it's defensible where "vastly more general" isn't: CL's multiple values are ephemeral in the calling convention. They aren't a value — you cannot put (values 1 2) in a variable, because it collapses on the way there and there's nothing left to inspect. A Ren-C pack is a value with a representation, an antiform block of lifted items. It's unstable in the variable space but reified in the value space, so meta-level code can lift it, examine it, pass it on intact.
That's the novelty: not decay, which is forty years old, but decay of something that has a representation while it's in flight.
Quote depth and LIFT_BYTE
Nested quoting exists everywhere — ''x in Lisp, Hold[Hold[x]] in Mathematica. In both, depth is structure: a quote of a quote is a container holding a container. Storing depth as an integer on the cell is a representational choice, and a good one, but on its own it's an optimization of a known idea.
The thing I can't find a precedent for is making antiform the bottom rung of the quoting ladder. Not a separate orthogonal axis with its own tag, but level 0 of the same counter that carries quote depth, reachable by the same LIFT/UNLIFT operation that moves between every other level. Antiform as less than unquoted.
That unification is the strongest claim in this thread and it's the one buried deepest. Everything else here is a consequence of it: packs, voids, splices, and errors aren't four features, they're four inhabitants of one rung.
ERROR! antiforms
Rust's Result<T, E> or Haskell's Either types—but again, those are syntactic constructs, not automatically decaying runtime values
This is wrong and it will be spotted. Result<T,E> is an ordinary runtime value — a tagged union, nothing syntactic about it.
The actual difference is better than the one claimed. Rust forces you to handle a Result through the type system: #[must_use] plus exhaustive matching, checked at compile time. Ren-C has no type system to lean on, so it forces handling through representation: an error antiform can't be stored, so declining to triage it isn't a warning you can ignore, it's a panic.
Antiform errors are #[must_use] implemented in the value representation instead of the type discipline. That sentence will land with any Rust programmer in one read, and it's the honest description of what the mechanism does.
What survives
The components have precedents. Vanishing values: Mathematica, Perl, Icon. Decay: Common Lisp. Quote depth: Lisp, Mathematica. Non-divergent errors: Rust, Haskell, Go.
What I can't find anywhere is all of them falling out of one ladder. Elsewhere each of these is a separate feature with its own representation, its own operations, and its own interaction rules with the others — which is why they compose badly and why every language has a pile of special cases at the seams. Here there's one byte, one pair of operations, and the features are positions rather than mechanisms.
That claim is stronger because it concedes the parts. "Nobody has ever had a vanishing value" loses to one citation. "Nobody has unified vanishing, decay, quoting, and failure into a single lift ladder" survives, because the person who wants to refute it has to produce a system where those four things share a representation, and I don't think there is one.
One methodological note, since it applies to the whole question.
Novelty is the wrong frame, and it's the frame that produces the flattery from the 2025-era-@chatgpt. It's unfalsifiable in the direction you want and cheap to attack in the direction that hurts.
The better question is the one from the loop-wrapper thread: given correctness, composability, and no change to how calling code is written, is there a cheaper solution than antiforms? That's answerable by anyone, it's falsifiable, and if someone finds a cheaper one you've got a better design and lost nothing. A minimality result doesn't require anybody to certify that you were first.