Я понимаю, что монада ST похожа на младшего брата IO, который, в свою очередь, является государственной монадой с добавленной магией RealWorld
. Я могу представить состояние, и я могу представить, что RealWorld каким-то образом помещается в IO, но каждый раз, когда я пишу подпись типа ST
, s
монады ST меня смущает.
Возьмите, например, ST s (STArray s a b)
. Как работает s
? Это просто используется для создания некоторой зависимости искусственных данных между вычислениями, не имея возможности ссылаться как состояния в государственной монаде (из-за forall
)?
Я просто выбрасываю идеи и очень ценю кого-то более знающего, чем я, чтобы объяснить это мне.