gpt4 book ai didi

haskell ->> 运算符做什么?

转载 作者:行者123 更新时间:2023-12-01 06:57:00 27 4
gpt4 key购买 nike

我正在学习 Haskell 中的 monad。

我读了here关于 Monads 的一个很好的解释,我认为已经了解(不是全部,但我刚刚开始)关于 >>=绑定(bind)运算符和 Monad。

在我老师的幻灯片上,我发现了这个:

class  Monad m  where
(>>=) :: m a -> (a -> m b) -> m b -- "bind"
(>>) :: m a -> m b -> m b -- "then"
return :: a -> m a

什么是 >>以及它与 >>= 的不同之处?

最佳答案

>>当您不关心值(value)时,这是一条捷径。也就是说,a >> b相当于a >>= \_ -> b (假设给定 monad 中 >> 的合理(或默认)定义)。

所以当你在 IO monad 中并且想要执行一些 print s,您可以使用 >>因为没有理由对 () 做任何事情那print产生:print a >> print b .

就do-notation而言exp >>= \var -> rest对应于

do
var <- exp
rest

exp >> rest只对应
do
exp
rest

关于haskell ->> 运算符做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37136294/

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