Übung 23.8.2
im Haskell Buch fragt mich, einen Zustand wie die folgenden zu konstruieren:Staat, in dem der resultierenden Zustand ist das Argument zur Verfügung gestellt und der Wert Einheit
put' :: s -> State s()
put' s = undefined
-- should act like:
-- Prelude> runState (put "blah") "woot"
-- ((),"blah")
Die einzige Implementierung ich bekommen habe zu typecheck ist
import Control.Monad.Trans.State -- Not sure this is the right import
put' :: s -> State s()
put' s = state $ \s -> ((), s)
Aber das gibt den Zustand, in dem Argument von runState
, nicht put'
:
λ> runState (put' "blah") "woot"
((),"woot")
Was Hakerk Akrobatik muss ich reparieren? Sieh nicht, wie ich auf die "blah"
zugreifen kann.
Ja, ja, Lambda-Äquivalenz (oder einige solcher ...) –