haskell - 多参数一元绑定(bind)

标签 haskell monads

有没有>>=对于两个参数的函数?就像是

bind2 :: m a -> m b -> (a -> b -> m c) -> m c

最佳答案

我不知道您可以使用哪些聪明的组合器从标准库中构建它,但冒着说明显而易见的风险,您自己很容易实现:

bind2 :: Monad m => (a -> b -> m c) -> m a -> m b -> m c
bind2 f ma mb = do
  a <- ma
  b <- mb
  f a b

> bind2 (\a b -> [a,b]) [1,2,3] [4,5,6]
[1,4,1,5,1,6,2,4,2,5,2,6,3,4,3,5,3,6]

关于haskell - 多参数一元绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32281762/

相关文章:

haskell - Haskell Miso 的编译速度更快

haskell |将多个值分配给某物,以便它们可以作为单个参数传递给函数

c++ - Haskell 与 C++ 中的简单 π(x)

haskell - 免费的单子(monad)也适用吗?

haskell - 当使用像 Parsec 这样的解析器组合器库时,我应该使用词法分析器吗?

haskell - 在 Haskell 中表达一系列脚本化的 Python 字符串替换

scala - 如何堆叠 State 和 IO monad

f# - 如何在 F# 中将两个(双选项)相乘

haskell - 了解 >>= 中的 "Monad m"

scala - 如何通用地组合返回不同 monads 的 monadic 函数?