我正在阅读purescript wiki,发现以下部分do
以>>=
.
是什么>>=
意思?
做符号
do 关键字为一元表达式引入了简单的语法糖。
这是一个示例,使用 monad 作为
Maybe
类型: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 绑定
let a = x
。请注意缺少in
关键字。示例
maybeSum desugars to
::maybeSum a b = a >>= \n -> b >>= \m -> let result = n + m in return result