haskell - coffeescript 的 `?.` 运算符是单子(monad)吗?

标签 haskell coffeescript monads

我刚刚阅读了 Haskell 中的 Maybe Monad,它似乎扮演了与 Coffeescript 的 ?. 相似的角色。运算符(operator)。是?.运算符被认为是一个单子(monad),还是只是做同一件事的两种不同方式?

在 Haskell 中,你写

a >>= b >>= c

在 CoffeeScript 中,你写
a?.b?.c

最佳答案

单个运算符(operator)不能是单子(monad),就像发动机不能是机动车辆一样。短路行为是 Maybe 和 (Maybe, return, (>>=)) 的属性。恰好是一个单子(monad)。

可能存在一些你可以在 CoffeeScript 中定义的东西,这样它们一起恰好是一个 monad 以及 ?.填补“绑定(bind)”的作用。与 Haskell 不同,这些东西不可能都是一流的,甚至不可能在语言中表示。

关于haskell - coffeescript 的 `?.` 运算符是单子(monad)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23878444/

相关文章:

haskell - 使用 Sublime 2 进行 Haskell 开发?

parsing - 如何将字符串转换为整数列表?

list - 如何将具有重复项的数组转换为具有重复项总和的数组?

javascript - 检查用户是否阻止了第 3 方域

javascript - 如何防止 jQuery 在点击时更改 href 属性?

scala - 在 Scala 中使用 monad 读取器的程序架构

typescript - 递归函数的类型

haskell - 为什么 `where` 在列表推导中产生解析错误,而 `let` 却没有?

haskell - 如何实现索引核心风格的索引延续 monad

javascript - 是否可以保留单行注释? (用CoffeeScript编写greasemonkey/userscripts)