2016-06-25 26 views
2

Standard-ML hat keine polymorphe Rekursion. Das Hinzufügen einer Rekursion zu der Modulsprache ermöglicht es uns, polymorphe Rekursion als Spezialfall wiederherzustellen, wobei Fixpunkte von endofunctors verwendet werden. Zum Beispiel:Typ-Inferenz für polymorphe Rekursion kodiert als Modul Rekursion

Es ist bekannt, dass polymorphe Rekursion Typinferenz unentscheidbar macht. Eine Funktordefinition enthält jedoch bereits partielle Typinformationen, nämlich die Signatur ihres Arguments. Reicht diese Information aus, um die Typrückschlüsse wieder entscheidbar zu machen?

+0

Welche Implementierung unterstützt 'Struktur rec'? –

+0

@ IonuţG.Stan: AFAICT, keine, obwohl ich SML/NJ nicht versucht habe. – pyon

+0

Ah, es ist eher eine theoretische Frage. SML/NJ unterstützt dies nicht. –

Antwort

3

Ja, da die Signatur eine "forward declaration" des polymorphen Typs bereitstellt, sodass sie nicht rekursiv abgeleitet werden muss. Außerdem benötigen Sie keinen Funktor, Sie können eine rekursive Strukturbindung direkt schreiben. Dies erfordert jedoch eine Signaturanmerkung und ist daher gleich.