Redundant attachment

The >> suffix gives an anonymous formation a name generated for it, so that it can be referenced from elsewhere: by itself recursively (via %), or by another object. If nothing ever refers to that generated name, the >> is redundant and should be removed.

Incorrect:

[] > foo
  test > @
    [] >>
      2.plus 2 > @

Correct:

[] > foo
  test > @
    []
      2.plus 2 > @

A generated name is not redundant when it is actually used, either by a recursive self-reference:

[] > foo
  test > @
    [n] >>
      if. > @
        n.eq 0
        0
        % (n.minus 1)

or by being called from another part of the same object:

[] > foo
  [n] >> helper
    n.plus 1 > @
  helper 5 > @

The name is not redundant either when the body reads objects from the scope that encloses it, beyond its own voids. Such an object cannot become anonymous, because anonymous-formation forbids an anonymous formation from reaching outside itself. Here func comes from mapped, not from [item idx], so the >> stays:

[sequence func] > mapped
  sequence.mapped > @
    func item > [item idx] >>

A generated name that the parser invents on its own, rather than for a >> written in the source, is left alone too. The ! suffix on a nameless argument is such a case: m.plus m! makes the parser wrap m into a named .as-bytes over Φ.dataized, and no >> exists in the source to be removed.

A void attribute declared as ? >> name is left alone as well. The name after >> is only a local alias, while the published name is generated by the parser. The >> cannot be dropped, because the grammar has no nameless void, and switching to ? > name would publish the attribute under name and change dispatch:

[] > choice
  ? >> left
  ? >> right
  left > @

Published on Wed Aug 26 07:19:11 UTC 2026.