Помните, что State s a
- это, по сути, функция s -> (a, s)
, то есть функция, которая принимает состояние и возвращает значение некоторого типа a
и новое состояние.
Итак get :: State s s
s -> (s, s)
, функция, которая просто возвращает текущее состояние.
put :: s -> s -> ((), s)
реализована как s -> _ -> ((), s)
, функция, которая принимает данное состояние, игнорирует текущее состояние, возвращает данное состояние ине производит никаких новых значений.