GHC weist den ST-Monad-Code zurück, da er Typvariablen nicht vereinheitlichen kann?

7

Ich habe die folgende Funktion geschrieben:

%Vor%

Aber als ich versucht habe zu kompilieren, habe ich folgenden Fehler:

%Vor%

Kann jemand helfen?

    
user1023733 04.11.2011, 09:21
quelle

2 Antworten

12

Dies ist genau so, wie es beabsichtigt ist. Ein STRef ist nur in einer Ausführung von runST gültig. Und Sie versuchen, eine externe STRef in einen neuen Lauf von runST zu legen. Das ist nicht gültig. Das würde im reinen Code beliebige Nebeneffekte ermöglichen.

Also, was Sie versuchen, ist unmöglich zu erreichen. Mit Absicht!

    
jmg 04.11.2011 09:23
quelle
7

Sie müssen im Kontext ST bleiben:

%Vor%

(Und wie hammar darauf hinweist, dass >= benötigt wird, benötigen Sie die Klasse Ord , die Num nicht liefert.)

    
dave4420 04.11.2011 10:02
quelle