【发布时间】:2016-04-15 19:05:38
【问题描述】:
是否可以在 Haskell 中打印状态单子的结果?
我正在尝试理解状态单子,并且在我一直关注的一本书中提供了以下用于创建状态单子的代码,但我在这个主题上苦苦挣扎,因为我无法直观地查看该过程,即查看最终结果.
newtype State s a = State { runState :: s -> (a,s)}
instance Monad (State s) where
return x = State $ \s -> (x,s)
(State h) >>= f = State $ \s -> let (a, newState) = h s
(State g) = f a
in g newState
【问题讨论】:
-
“如何打印状态单子”与“如何打印状态单子的 result”是一个完全不同的问题,至少如果我将前者理解为打印
State动作 和后者作为打印一次执行State动作的结果。你是什么意思? -
@leftaroundabout 结果抱歉。