Skip to content

positional_not_allowed

Form’s :positional declaration is none but a positional child was provided.

A form declares what may sit between its parentheses. With no :positional declaration the answer is “keyword pairs only”, and anything else in there fires this.

(circle 42) is the plain shape: 42 sits under no key. Wrap it in the key it belongs to, (circle :radius 42), or move it under a parent that does take children.

The other shape looks like a keyword. (lane :name) fires this too, on :name, which reads as a key and not as a positional at all. The parser pairs :key value greedily, so a keyword with nothing left to pair (the end of the form, or another keyword straight after it) becomes a bare keyword value instead. That is the rule behind (camera :ortho :zoom 2), where :ortho is a flag; it is also what a missing value turns into. The message names the keyword when this is the shape you hit.

So (lane :name) is almost always a half-written (lane :name "left"). If you did mean the flag, the form has to declare one: :positional (flag-set (flag :name ortho)).


Run sjon explain positional_not_allowed to read this at a terminal, browse every code, or work through diagnostics-driven repair if you want the habit rather than the answer.