Monads:seq 和 >>= 之间有什么区别?
有什么区别? seq
能否保证更多的流动条件?
What's the difference? Does seq
guarantee more flow conditions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
有什么区别? seq
能否保证更多的流动条件?
What's the difference? Does seq
guarantee more flow conditions?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
他们根本没有关系。
seq
的类型:它用于(如
seq a b
或a `seq` b
)来评估a
为普通形式,这是一种奇特的说法,它强制对惰性值a
进行一点评估。它与 monad 无关。>>=
用于对 monad 进行排序。它具有以下类型:它用于从一元值获取值并将其传递给返回另一个一元值的函数。基本上类似于:
将从命令行获取一串输入,然后将其打印出来。
所以,基本上,没有任何关系。
They aren't related at all.
seq
has the type:It is used (as
seq a b
, ora `seq` b
) to evaluatea
to head normal form, which is a fancy way of saying that it forces the lazy valuea
to be evaluated a little bit. It has nothing to do with monads.>>=
is for sequencing monads. It has the type:It is used to get the value from a monadic value and pass it to a function that returns another monadic value. Basically something like:
which would get a string of input from the command-line and then print it out.
So, basically, no relation at all.
seq
< /a> 不是特定于 monad 的。seq
用于在返回第二个参数之前强制评估其第一个参数。seq
is not specific to monads.seq
is used to force evaluation of its first argument before its second is returned.