>>=
>>= what is this mean in the Haskell programming?
uncurry meaning?
Haskell编程中>> =的含义是什么? 什么是不可靠的意思在Haskell?
答案 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值(...)
我建议阅读上面的链接 - 它在那里得到了很好的解释