Something
public text v1 · immutablenewtype State st a = State (st -> (st, a))
instance Monad (State state) where
return a = State (\state -> (state, a))
State run >>= action = State run'
where run' st =
let (st', a) = run st
State run'' = action a
in run'' st'