---
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 }
```