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