ST monad, изначально разработанный Launchbury и Peyton Jones, позволяет программистам Haskell писать императивный код (с изменяемыми переменными, массивами и т.д.), получая чистый интерфейс к этому коду.
Более конкретно, полиморфный тип функции точки входа
runST :: (forall s. ST s a) -> a
гарантирует, что все побочные эффекты вычисления ST
содержатся, и полученное значение является чистым.
Было ли это когда-либо строго (или даже формально) доказано?