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

Haskell构造函数“>>=”是什么意思?,haskell,Haskell,>>=在Haskell编程中的含义是什么? 在Haskell中uncurry是什么意思?该操作称为bind并从 绑定操作>>和>>=,将两个一元值组合在一起 我建议阅读上面的链接,这里已经很好地解释了它是一个函数名,而不是构造函数名。Haskell中的构造函数名称必须以大写字母或冒号开头: 在前奏曲中>>=被定义为Monad m类的方法,如下所示: >>= >>= what is this mean in the Haskell programming? uncurry

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

该操作称为bind并从

绑定操作>>和>>=,将两个一元值组合在一起

我建议阅读上面的链接,这里已经很好地解释了它是一个函数名,而不是构造函数名。Haskell中的构造函数名称必须以大写字母或冒号开头:

在前奏曲中>>=被定义为Monad m类的方法,如下所示:

>>=
>>= what is this mean in the Haskell programming?
uncurry meaning?
这就叫bind操作符,意思是将monad的值与使用monad中包含的值的函数相结合

对于IO monad action1>>=\value->action2执行action1,将操作结果输入函数,然后执行action2

对于列表monad>>=相当于concatMap,即它为给定列表的每个元素执行给定函数,并生成由此生成的列表的concatenation作为其结果

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

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

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

那么我可以重写action1>>=\value->action2而不使用>>=只需简单使用一些function@Joe是的,每次使用>>=或>>都等同于do符号,反之亦然。我可以重写action2[a]、[b]@:=action1[a']、[b']>>=action1到action2[a],[b]@:=action2action1[a'],[b']就像您所说的,首先执行action1,并将结果提供给action2中的函数,然后执行action2。因此,我可以将Action2a,b=Action1a',b'>>=action1视为本例中的递归,因为我不会多次停止执行action1和action2,直到它遇到平凡的情况,即[b]变为空列表。uncurry与>>=。看见
do
  b <- a
  c