2

有什么不同?是否seq保证更多的流动条件?

4

2 回答 2

15

他们根本没有关系。

seq具有以下类型:

seq :: a -> b -> b

它用于 (as seq a b, 或a `seq` b) 来评估a头部范式,这是一种奇特的说法,它强制对惰性值a进行一点评估。它与单子无关。

>>=用于对单子进行排序。它具有以下类型:

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

它用于从一元值中获取值并将其传递给返回另一个一元值的函数。基本上是这样的:

getLine >>= putStrLn

这将从命令行获取输入字符串,然后将其打印出来。

所以,基本上,没有任何关系。

于 2011-07-26T23:57:44.507 回答
2

seq不是特定于单子的。seq用于在返回第二个参数之前强制评估其第一个参数。

于 2011-07-26T23:54:47.050 回答