Просто изучая государственную монаду из этого превосходного tutorial. Однако, когда я попытался объяснить это не программисту, у них возник вопрос, который меня насторожил.
Если целью государства является имитация измененной памяти, почему функция, которая хранит монады монадов, имеет тип:
s -> (a, s)
а не просто:
s -> s
Другими словами, какова потребность в "промежуточном" значении? Например, не могли бы мы в тех случаях, когда это нам нужно, имитировать его, просто определяя состояние как кортеж (state, value)
?
Я уверен, что я что-то смутил, любая помощь приветствуется.