gpt4 book ai didi

haskell - 这个类似状态的单子(monad)有什么好名字

转载 作者:行者123 更新时间:2023-12-03 14:59:14 25 4
gpt4 key购买 nike

这是 State 的组合。和 Writer .我已经检查了单子(monad)定律。

newtype M s a = M { runM :: s -> (s,a) }

instance (Monoid s) => Monad (M s) where
return = M . const . (mempty,)
m >>= f = M $ \s ->
let (s' ,x) = runM m s
(s'',y) = runM (f x) (s `mappend` s')
in (s' `mappend` s'', y)
StateWriter似乎有点蹩脚。

最佳答案

“内向作家”?看起来你可以用它做的有趣事情(你不能用 Writer 做的)是编写一个检查状态/输出并改变它的自省(introspection)函数:

introspect :: (s -> s) -> M s ()
introspect f = M $ \s -> (f s, ())

我看不出你可以为作家做到这一点,我认为你必须使用后变压器来代替:
postW :: Writer w a -> (w -> w) -> Writer w a
postW ma f = Writer $ let (w,a) = getWriter ma in (f w,a)

关于haskell - 这个类似状态的单子(monad)有什么好名字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4436095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com