Ich werde durch den Staat Monade here und ich versuche zu implementieren:Datenkonstruktorfehler bei der Implementierung von State Monad?
import Control.Monad.Reader
import Control.Monad.Writer
import Control.Monad.State
type Stack = [Int]
pop :: State Stack Int
pop = State $ (x : xs) -> (x, xs)
aber ich folgende Fehlermeldung bin immer:
"Data constructor not in scope:
State :: ([t0] -> (t0, [t0])) -> State Stack Int
Perhaps you meant one of these:
‘StateT’ (imported from Control.Monad.State),
variable ‘state’ (imported from Control.Monad.State)"
Bin ich etwas Grundsätzliches hier fehlt?
Danke Alec, sehr klar - ich bin froh, dass ich in meinem Alter nicht wählerisch werde! –
[Das verknüpfte Lernprogramm ist veraltet und vereinfacht die Dinge nicht.] (Http://hackage.haskell.org/package/mtl-1.0/docs/Control-Monad-State.html # t: State) Es gab eine Zeit, in der die Leute befürchteten, dass Transformatoren, die auf 'Identity' aufbauten, im Vergleich zur direkten Definition der entsprechenden Monade zu Laufzeitkosten führten und so viele Bibliotheken (einschließlich mtl) sowohl eine Monade als auch ihren Transformator lieferten. Letztendlich hat sich das Argument der Codeverdopplung/-pflege gegen dieses Argument durchgesetzt. –