--- 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. ```ludic state Counter { n: int = 0 } function bump(c: mut Counter) -> void { c.n = c.n + 1 } ```