Мне трудно понять STArray
из документации и других действий/обсуждений, которые я нашел через Google. У меня есть еще несколько связанных вопросов.
Согласно документации, STArray
Mutable boxed и unboxed массивы в монаде ST.
Мне показалось, что STArray
предполагается использовать как состояние, передаваемое между функциями (представьте, что у вас есть вектор, который нужно часто обновлять).
По-видимому, это используется по-разному:
ST s (STArray s a e)
Что такое состояние s
здесь? Если он используется внутри, то почему это не скрыто от пользователя?
Это также означает, что если мы хотим использовать STArray s Int Int
, передаваемое как состояние, можно было бы определить
type StateArray a = Control.Monad.State (ST s (STArray s Int Int)) a
который кажется довольно громоздким.
Наконец,
- В чем разница между
ST
иState
? - В чем разница между
STArray
иIOArray
, еслиST
иIO
предназначены для использования "внутри"?
Спасибо!