根据State Monad的get函数提出一个问题:
如果我跑
运行状态得到 1
我得到了结果
(1,1)
这对我来说没问题,因为 get 函数将结果值设置为状态,在这种情况下,状态为 1。因此,(1,1) 是结果。好的。
但如果我跑
runState (do{(a,b) <- get; return a}) (False, 0)
我得到了结果
(假,(假,0))
而这我不明白。
get 函数将结果值设置为状态并保持状态不变。所以我期望的是这样的
((假,0),(假,0))
这个也一样
runState (do{(a,b) <- get; return b}) (False, 0)
结果是
(0,(假,0))
如上所述,我再次不明白这一点。
所以,如果你能为我解释这个奇怪的结果,那就太好了。;)
提前致谢
此致,
吉米