runST mit Hindley-Milner-System

Wenn ich die ST-Monade in Haskell richtig verstehe,runST verwendet auf clevere Weise Rang-2-Typen, um sicherzustellen, dass eine Berechnung auf keinen anderen Thread verweist, wenn sie der Monade entkommt.

Ich habe eine Spielzeugsprache mit einem Hindley-Milner-Typensystem und meine Frage lautet wie folgt: Ist es möglich, das HM-Typensystem mit einer Ad-hoc-Regel für die Eingabe von @ zu erweiterrunST Anwendungen, damit die ST-Monade sicher entkommen kann,ohne Rang-2-Typen einzuführen?

Etwas präziser,runST hätte Typforall s a. ST s a -> a (d. h. Rang-1) und die Typisierungsregel würden zuerst versuchen, den Berechnungstyp auf die gleiche Weise zu verallgemeinern, wie HM Typen in Let-Ausdrücken verallgemeinert, aber einen Typfehler auslösen, wenn dasss wurde festgestellt, dass die Variable vom Typ @ gebunden ist.

Die oben genannten Einschränkungen gelten nur für akzeptierte Programme im Vergleich zu Vanille-HM. Es scheint also vernünftig zu sein, aber ich bin mir nicht sicher. Würde das funktionieren?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage