【发布时间】:2014-08-05 15:28:30
【问题描述】:
你已经看过下面的函数了吗?这叫什么?它有什么用?可以比StateT更通用地定义吗?
simpleFunction (StateT f) = StateT $ (\s -> return (f s, s))
顺便说一下,ghc 给它的类型是Monad n => StateT s m a -> StateT s n (m (a, s))。
还有一个替代定义:
simpleFunction m = do
s <- get
mapStateT (\l -> return (l, s)) m
【问题讨论】:
-
我怀疑这可以比
State更通用地定义。 -
@leftaroundabout:好点。你对这种通用定义有什么建议吗?我已经相应地更新了问题。
-
这是一个家庭作业问题;-?我问是因为如果它是一个(可能)有一个(有点简单)的答案。如果不是,我不确定是否有答案。
-
你能激发这个问题吗?你能举例说明你想如何使用这个功能吗?
-
我觉得这个功能不是很深。它只取当前状态,但除此之外
f s :: m (a, s)完全独立于剩余的StateT s n计算。
标签: haskell functional-programming monads monad-transformers state-monad