runST с системой типов Хиндли-Милнера

Если я правильно понимаю монаду ST в Haskell,runST использует типы ранга 2 умным способом, чтобы гарантировать, что вычисление не ссылается ни на какой другой поток при выходе из монады.

У меня есть игрушечный язык с системой типов Хиндли-Милнера, и мой вопрос заключается в следующем: возможно ли расширить систему типов HM специальным правилом для набора текста?runST приложения, так что монаду ST безопасно избежать,без введения типов ранга 2?

Точнее,runST будет иметь типforall s a. ST s a -> a (т. е. rank-1) и правило типизации сначала попытается обобщить тип вычисления таким же образом, как HM обобщает типы в выражениях let, но выдает ошибку типа, еслиs Переменная типа найдена связанной.

Вышесказанное ограничивает только принятые программы по сравнению с vanilla HM, так что это звучит нормально, но я не уверен. Будет ли это работать?

Ответы на вопрос(1)

Ваш ответ на вопрос