xdd! es que no entiendo el operador de binding de la monada de estado...
(>>=) :: State s a -> (a -> State a b) -> State a b
oroccessor >>= processorGenerator = State $ ->
let (x,st') = runState processor st
in runState (processorGenerator x) st'
Lo que no capto es la verdadera utilidad de esto... que se yo como por ejemplo la monada Maybe es muy sencilla, o la IO, aunque no vi la implementacion se entiende.
Me frustre para entender este del estado. (no escribi el return por que ese si lo capte)
Lo cierto es que no tengo aún mucha idea de Haskell estoy aprendiendo. Si quieres te puedo pasar PDF con mucha teoria de Haskell, practicas, etc..
Por cierto tu code, me genera un error al compilarlo con el GHCi