Описание тега state-monad
Монада, позволяющая прикреплять информацию о состоянии к вычислениям
Монада состояний позволяет программисту присоединять к вычислению информацию о состоянии любого типа. Для любого типа значения соответствующий тип в монаде состояния является функцией, которая принимает состояние, а затем выводит новое состояние вместе с возвращаемым значением. В Википедии есть краткий обзор.