当你从Nothing中抽取时会发生什么?

时间:2016-05-21 16:17:00

标签: haskell

一般来说,当我们从Nothing构造中的do中抽取时会发生什么?为了说明我的困惑:为什么do {x <- Just 1; y <- Nothing; return x}会产生Nothing

1 个答案:

答案 0 :(得分:9)

您的do区块已被淘汰:

Just 1 >>= (\x -> Nothing >>= (\y -> return x))

如果您查看可能的definition of (>>=)

(Just x) >>= k      = k x
Nothing  >>= _      = Nothing

您可以看到Nothing >>= (\y -> return x)返回NothingJust 1 >>= (\x -> Nothing)也是Nothing