Ich lese mich in Monad-Tutorials ein, und das, an dem ich gerade arbeite, ist http://www.muitovar.com/monad/moncow.xhtml aber ich bin auf ein Problem mit der State Monad gestoßen, genauer gesagt mit der runState Accessor-Funktion.
Der Typ ist definiert als
newtype State s a = State { runState :: (s -> (a,s)) }
und es heißt z.B.
runState (chncasewst3 'e' 'd' 'f') False
Ich weiß nicht, wie ich die Definition lesen soll, um zur zweiten Zeile zu gelangen, insbesondere wegen des Teils "State s a". Wenn es "State a s" hieße, könnte ich ableiten, dass der Accessor "bis" zum "s" gecurlt wurde.
Die Frage ist also, wie ich die Typdefinition lesen kann, damit ich sehen kann, wie ich die Accessor-Funktion in dieser Situation aufrufen kann, und wenn möglich, wie ich Accessor-Funktionen an sich lesen kann.