runST com sistema do tipo Hindley-Milner

Se eu entendi a mônada ST em Haskell corretamente,runST usa tipos de classificação 2 de maneira inteligente para garantir que um cálculo não faça referência a nenhum outro encadeamento ao escapar da mônada.

Eu tenho uma linguagem de brinquedo com um sistema do tipo Hindley-Milner, e minha pergunta é a seguinte: é possível estender o sistema do tipo HM com uma regra ad-hoc para digitaçãorunST aplicações para que a mônada ST possa ser escapada com segurança,sem introduzir tipos de classificação 2?

Mais precisamente,runST teria tipoforall s a. ST s a -> a (ou seja, rank-1) e a regra de digitação primeiro tentaria generalizar o tipo de computação da mesma maneira que o HM generaliza os tipos em let-expression, mas gera um erro de tipo se os Verificou-se que a variável de tipo está vinculada.

O exemplo acima restringe apenas os programas aceitos em comparação com o HM de baunilha, portanto parece bom, mas não tenho certeza. Isso funcionaria?

questionAnswers(1)

yourAnswerToTheQuestion