ludic/docs/language/annotations
Orkuncakilkaya ab0b84b87e feat(lang): 27.3 - a reducer on a table's row: reducer T in S.table on A, @Target, Row<T>, @RowVerb, @Column
An action names one row of a ludic.base Table<T> by its handle, in a field marked @Target, and
`reducer Deer in Herd.deer on Spook(r: mut Row<Deer>, n: Noise, a: Spook)` runs once, for that row
alone (the table may sit down a path, S.w.tab). The drain resolves the handle (tb_row) and hands the
reducer a Row<T> - new in ludic.base: tb, row, h, rec - that the queue keeps, one per row reducer,
filled in place, so a targeted action allocates nothing; a stale handle runs nothing, and
LUDIC_ACTIONS_LOG=1 prints a line for it (@alloc_ok). Row reducers order among an action's by their
state's name, then the table's path.

Checked at compile time (actions_rows.ludic): the row reaches r.rec and r.h only - r.tb / r.row
refused, the view never assigned, stored, copied or handed on except to a @RowVerb (a function of
the record's own module taking Row<T> first; any other function taking a row is refused); a field
marked @Column (a table column mirrors it) is not written through r.rec; only the module owning the
state declares a row reducer; one @Target, an int, per action; the states between the row and the
action are read. `mut` is allowed on a Row<T> parameter.

ludic schema's code section gains row_reducers (record, table, state, action, target, predicted,
net, module, at) and row_verbs (name, record, module, at), and every action its target; row
reducers are left out of `reducers`. ludic deps and ludic-lsp name a row reducer
`reducer Deer in Herd.deer on Spook`. vocab: @Target, @Column, @RowVerb; docs/language pages;
LANGUAGE.md "A reducer on a row"; examples actions/rows and ten rejects; test.ludic feat, reject and
schema cases (not run); changes/row-reducers.md. Reseeded; bootstrap-cfree fixpoint holds (307497
lines); Maroon Lake's `ludic build --check` is clean against this tree.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 16:14:59 +03:00
..
_section.md docs: add Networking section + process/OS builtins (net_send, owner, is_server, serialize/apply, arg, exit, run, getenv, read_char, file_*) 2026-08-29 16:39:29 +03:00
annot-alloc_ok.md docs/language: a page for every keyword and attribute the vocabulary has 2026-09-29 23:59:47 +03:00
annot-appendonly.md docs/language: a page for every keyword and attribute the vocabulary has 2026-09-29 23:59:47 +03:00
annot-asset.md docs/language: a page for every keyword and attribute the vocabulary has 2026-09-29 23:59:47 +03:00
annot-clearcolor.md docs/language: a page for every keyword and attribute the vocabulary has 2026-09-29 23:59:47 +03:00
annot-color.md docs/language: a page for every keyword and attribute the vocabulary has 2026-09-29 23:59:47 +03:00
annot-column.md feat(lang): 27.3 - a reducer on a table's row: reducer T in S.table on A, @Target, Row<T>, @RowVerb, @Column 2026-09-30 16:14:59 +03:00
annot-computed.md docs(api): per-symbol pages, fuzzy search, deep token linking, hover cards 2026-08-29 17:53:22 +03:00
annot-derived.md docs/language: a page for every keyword and attribute the vocabulary has 2026-09-29 23:59:47 +03:00
annot-deterministic.md docs/language: a page for every keyword and attribute the vocabulary has 2026-09-29 23:59:47 +03:00
annot-enginesystem.md docs(pkg): document @Namespace / @EngineSystem / @System + package hooks (#62) 2026-09-01 12:31:47 +03:00
annot-export.md docs(0.S): the doc fences migrated by ludic migrate state; LANGUAGE.md's state section says what the tool and the checker do now; no module-level var left in the docs 2026-09-25 15:37:29 +03:00
annot-frame.md docs/language: a page for every keyword and attribute the vocabulary has 2026-09-29 23:59:47 +03:00
annot-handles.md docs(api): per-symbol pages, fuzzy search, deep token linking, hover cards 2026-08-29 17:53:22 +03:00
annot-key.md docs/language: a page for every keyword and attribute the vocabulary has 2026-09-29 23:59:47 +03:00
annot-max.md docs/language: a page for every keyword and attribute the vocabulary has 2026-09-29 23:59:47 +03:00
annot-namespace.md docs(pkg): document @Namespace / @EngineSystem / @System + package hooks (#62) 2026-09-01 12:31:47 +03:00
annot-node.md docs/language: a page for every keyword and attribute the vocabulary has 2026-09-29 23:59:47 +03:00
annot-on.md docs(api): per-symbol pages, fuzzy search, deep token linking, hover cards 2026-08-29 17:53:22 +03:00
annot-onattach.md docs(api): per-symbol pages, fuzzy search, deep token linking, hover cards 2026-08-29 17:53:22 +03:00
annot-ondespawn.md feat(compiler): list literals, typed compound assignment, file:line diagnostics 2026-09-05 01:12:16 +03:00
annot-ondetach.md docs(api): per-symbol pages, fuzzy search, deep token linking, hover cards 2026-08-29 17:53:22 +03:00
annot-ondisable.md docs(api): per-symbol pages, fuzzy search, deep token linking, hover cards 2026-08-29 17:53:22 +03:00
annot-onenable.md docs(api): per-symbol pages, fuzzy search, deep token linking, hover cards 2026-08-29 17:53:22 +03:00
annot-oneof.md docs/language: a page for every keyword and attribute the vocabulary has 2026-09-29 23:59:47 +03:00
annot-onquit.md docs(api): per-symbol pages, fuzzy search, deep token linking, hover cards 2026-08-29 17:53:22 +03:00
annot-onspawn.md docs(api): per-symbol pages, fuzzy search, deep token linking, hover cards 2026-08-29 17:53:22 +03:00
annot-onstart.md docs(0.S): the doc fences migrated by ludic migrate state; LANGUAGE.md's state section says what the tool and the checker do now; no module-level var left in the docs 2026-09-25 15:37:29 +03:00
annot-owned.md docs(api): per-symbol pages, fuzzy search, deep token linking, hover cards 2026-08-29 17:53:22 +03:00
annot-owns.md docs/language: a page for every keyword and attribute the vocabulary has 2026-09-29 23:59:47 +03:00
annot-permap.md docs/language: a page for every keyword and attribute the vocabulary has 2026-09-29 23:59:47 +03:00
annot-predicted.md docs(api): per-symbol pages, fuzzy search, deep token linking, hover cards 2026-08-29 17:53:22 +03:00
annot-public.md docs(api): per-symbol pages, fuzzy search, deep token linking, hover cards 2026-08-29 17:53:22 +03:00
annot-queries.md docs(api): per-symbol pages, fuzzy search, deep token linking, hover cards 2026-08-29 17:53:22 +03:00
annot-range.md docs/language: a page for every keyword and attribute the vocabulary has 2026-09-29 23:59:47 +03:00
annot-reads.md docs(api): per-symbol pages, fuzzy search, deep token linking, hover cards 2026-08-29 17:53:22 +03:00
annot-ref.md docs/language: a page for every keyword and attribute the vocabulary has 2026-09-29 23:59:47 +03:00
annot-rowverb.md feat(lang): 27.3 - a reducer on a table's row: reducer T in S.table on A, @Target, Row<T>, @RowVerb, @Column 2026-09-30 16:14:59 +03:00
annot-server.md docs(api): per-symbol pages, fuzzy search, deep token linking, hover cards 2026-08-29 17:53:22 +03:00
annot-sync.md feat(compiler): list literals, typed compound assignment, file:line diagnostics 2026-09-05 01:12:16 +03:00
annot-system.md docs(pkg): document @Namespace / @EngineSystem / @System + package hooks (#62) 2026-09-01 12:31:47 +03:00
annot-target.md feat(lang): 27.3 - a reducer on a table's row: reducer T in S.table on A, @Target, Row<T>, @RowVerb, @Column 2026-09-30 16:14:59 +03:00
annot-text.md Merge lang/i18nkeys (27024de) into lang/syntax: the vocabulary gains the text keys - the Key type, @TextKey (a registry's), the k"..." and kn"..." literals - and @Text's doc; docs/language pages for Key and @TextKey; ludic-dev syntax rewrote the grammars; reseeded, bootstrap-cfree fixpoint holds 2026-09-30 00:02:48 +03:00
annot-textkey.md Merge lang/i18nkeys (27024de) into lang/syntax: the vocabulary gains the text keys - the Key type, @TextKey (a registry's), the k"..." and kn"..." literals - and @Text's doc; docs/language pages for Key and @TextKey; ludic-dev syntax rewrote the grammars; reseeded, bootstrap-cfree fixpoint holds 2026-09-30 00:02:48 +03:00
annot-tint.md docs/language: a page for every keyword and attribute the vocabulary has 2026-09-29 23:59:47 +03:00
annot-toclients.md docs(api): per-symbol pages, fuzzy search, deep token linking, hover cards 2026-08-29 17:53:22 +03:00
annot-toserver.md docs(api): per-symbol pages, fuzzy search, deep token linking, hover cards 2026-08-29 17:53:22 +03:00
annot-unit.md docs/language: a page for every keyword and attribute the vocabulary has 2026-09-29 23:59:47 +03:00
annot-writes.md docs(api): per-symbol pages, fuzzy search, deep token linking, hover cards 2026-08-29 17:53:22 +03:00