当前位置:  开发笔记 > 小程序 > 正文

为什么没有>> Haskell中只有3个什么都没有?

如何解决《为什么没有>>Haskell中只有3个什么都没有?》经验,为你挑选了2个好方法。

>>Haskell中函数的签名是这样的:

(>>) :: m a -> m b -> m b

默认实现是:

x >> y = x >>= \_ -> y

由此,我理解该>>函数总是返回其正确的参数,而不管左边的值.lambda甚至不关心左参数(x)的值是什么.那么,为什么Nothing >> Just 3等于Nothing?它不应该只是返回Just 3,因为那是右边的论证的价值吗?

我知道当与a相关联时,任何Just值都将返回Nothing,Nothing但在这种情况下,Nothing甚至不被lambda捕获.我错过了什么?

奖金问题,>>=被称为绑定.什么>>叫?

谢谢.



1> leftaroundab..:

因为绑定甚至不关心lambda的价值是什么!

Just x  >>= f = f x
Nothing >>= _ = Nothing

请注意,(Nothing >>=)它不会评估其第二个参数.



2> duplode..:

要真正理解(>>)在这种情况下你需要查看for 的定义(>>=)Maybe:

(Just x) >>= k      = k x
Nothing  >>= _      = Nothing

Nothing >>= kNothing无论k函数是什么,都会进行评估.在特定的情况下(>>),k恰好是\_ -> y.

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有