Haskell-左箭头vs嵌套案例

问题描述

我到处都没有找到关于它的定义/描述。当我从第一原理开始进行Haskell编程时,在monads简介章节(第763页)中,它显示了嵌套case语句的示例:

mkSphericalCow :: String -> Int -> Int -> Maybe Cow
mkSphericalCow name' age' weight' =
    case noEmpty name' of
        Nothing -> Nothing
        Just nammy ->
            case noNegative age' of
                Nothing -> Nothing
                Just agey ->
                    case noNegative weight' of
                        Nothing -> Nothing
                        Just weighty ->
                            weightCheck
                                (Cow nammy agey weighty)

它表示可以替换为:

mkSphericalCow' :: String -> Int -> Int -> Maybe Cow
mkSphericalCow' name' age' weight' = do
    nammy <- noEmpty name'
    agey <- noNegative age'
    weighty <- noNegative weight'
    weightCheck (Cow nammy agey weighty)

这在世界上如何运作!?这个叫什么?我能找到的最接近的是this answer,将其描述为“单音符号”。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)