Wenn ich die ST-Monade in Haskell richtig verstehe, verwendet runST
Rank-2-Typen in einer cleveren Weise, um sicherzustellen, dass eine Berechnung keinen anderen Thread bei der Flucht aus der Monade verweist.runST mit Hindley-Milner-Typ-System
Ich habe eine Spielzeugsprache mit einem Hindley-Milner-System, und meine Frage ist folgende: Ist es möglich, das HM-System mit einer Ad-hoc-Regel für die Eingabe von runST
Anwendungen zu erweitern, so dass die ST Monad sicher ist Escapeable, ohne Einführung von Rang-2-Typen?
Genauer gesagt, würde runST
Art hat forall s a. ST s a -> a
(dh Rang-1) und die Typisierung Regel würde zuerst versuchen, die Berechnungsart in der gleichen Art und Weise HM-Typen zu verallgemeinern in let-Ausdrücke verallgemeinert, aber eine Art Fehler, wenn die erhöhen s
Typ Variable wird gefunden, gebunden zu sein.
Das obige beschränkt nur akzeptiert Programme im Vergleich zu Vanille HM, so scheint es gesund, aber ich bin mir nicht sicher. Würde das funktionieren?
Ja, können Sie fügen Sie 'runST' als spezielle Typisierungsregel, die die erforderlichen Prüfungen durchführt. – augustss
Ok danke :-) – max
Es muss auch überprüft werden, dass die Typvariable 's' nicht in' a' erscheint, da sonst der Zustand außerhalb der Monade auslaufen könnte. – max