ludic/docs/language/structure/kw-mut.md
Orkuncakilkaya e2528c1b10 docs/language: a page for every keyword and attribute the vocabulary has
Keywords: module uses friend export internal numbers unsafe mut port bind action
reducer registry of as from def open alias component prop view (structure),
shows lasts then loads (scenes), system (ecs), dispatch (control), true false
null (operators). Attributes: @Ref @OneOf @Range @Unit @Asset @Color, @Node /
@Clip / @Material, @Tint @Derived, @Text / @Multiline, @Key, @AppendOnly /
@ByKey, @PerMap / @Chunked, @frame @max, @owns / @creates / @releases,
@deterministic @alloc_ok. Each is in tools/docgen/inventory.json; every fence
that is not marked skip parses (ludicc --fmt). annot-clearcolor's token loses its
quotes, which no reader strips.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 23:59:47 +03:00

661 B


id: kw-mut name: mut category: structure kind: keyword tokens: mut sig: function f(st: mut State) tip: A parameter the function may change - how a state is written. order: 58

A state reaches a function only as a parameter: h: HikerState to read it, h: mut HikerState to change it, so a function's signature is everything it touches. The compiler refuses a write through a parameter that is not mut, and ludic migrate state --tighten takes mut off every one nothing down the chain writes.

state Counter { n: int = 0 }
function bump(c: mut Counter) -> void { c.n = c.n + 1 }