Haskell构造函数">> ="意思是什么?

时间:2015-11-21 15:33:29

标签: haskell

>>=
>>= what is this mean in the Haskell programming?
uncurry meaning?

Haskell编程中>> =的含义是什么?   什么是不可靠的意思在Haskell?

2 个答案:

答案 0 :(得分:4)

>>=是函数名,而不是构造函数名。 Haskell中的构造函数名称必须以大写字母或冒号(:)开头。

在前奏>>=中定义为class Monad m的方法如下:

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

这称为“绑定运算符”,意味着将monad的值与使用monad中的“contains”值的函数组合。

对于IO monad action1 >>= \value -> action2执行action1,请将操作结果提供给该函数,然后执行action2

对于列表,monad >>=等同于concatMap,即它为给定列表的每个元素执行给定函数,并生成由此产生的列表作为结果的连接。 / p>

关于>>=的特殊之处在于它被do符号的使用所使用。因此a >>= \b -> c也可以使用do表示法编写:

do
  b <- a
  c

因此,通过为您的类型定义>>=(通过Monad实例),您可以控制do符号对您的类型的行为。

答案 1 :(得分:0)

该操作称为bind,来自haskell tutorial docs

  

绑定操作,&gt;&gt;和&gt;&gt; =,组合两个monadic值(...)

我建议阅读上面的链接 - 它在那里得到了很好的解释