Monads:seq和>> =之间有什么区别?

时间:2011-07-26 23:39:40

标签: haskell monads seq

有什么区别? seq是否保证更多流量条件?

2 个答案:

答案 0 :(得分:15)

它们根本不相关。

seq的类型为:

seq :: a -> b -> b

使用它(作为seq a ba `seq` b)来评估a以正常形式,这是一种说法强制延迟值{{1}的奇特方式要进行一点评估。它与monads无关。

a用于测序monad。它的类型为:

>>=

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

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

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

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

答案 1 :(得分:2)

seq并非特定于monad。 seq用于强制在返回第二个参数之前对其第一个参数进行评估。