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