【发布时间】:2016-02-02 13:41:34
【问题描述】:
我正在阅读purescript wiki 并找到以下部分,该部分根据>>= 解释do。
>>= 是什么意思?
做符号
do 关键字为 monadic 引入了简单的语法糖 表达式。
这是一个示例,使用
Maybe类型的 monad:maybeSum :: Maybe Number -> Maybe Number -> Maybe Number maybeSum a b = do n <- a m <- b let result = n + m return result
maybeSum需要两个Maybe Number类型的值,如果两个数字都不是,则返回它们的总和Nothing。使用do表示法时,必须有对应的 返回类型的 Monad 类型类的实例。语句可以 有以下形式:
a <- x脱糖到x >>= \a -> ...x去糖到x >>= \_ -> ...或者只是 x 如果这是最后一个语句。- 让绑定
let a = x。请注意缺少in关键字。例子
maybeSum desugars to:::maybeSum a b = a >>= \n -> b >>= \m -> let result = n + m in return result
【问题讨论】:
-
> do 关键字为一元表达式引入了简单的语法糖。 6年后,这句话仍然毫无意义
-
@CodeWhisperer .. “语法糖”只是“写同样东西的更好方法。 monadic 表达式是使用 modad 的表达式。在这种情况下,Maybe monad。 Monads 是包装其他类型以使代码可组合/可链接的类型通常你包装你的基本类型......对包装的类型进行操作,......然后解开结果以查看你得到了什么。 Maybe monad 处理空属性。在这种情况下,
do可以让您跳过一些缩进,使代码看起来更加程序化
标签: purescript