首页 > 解决方案 > Haskell - 左箭头与嵌套 case 语句

问题描述

我没有成功地到处寻找这个的定义/描述。当我从第一原理开始 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)

这到底是怎么回事!?这个叫什么?我能找到的最接近的是这个答案,它将它描述为“一元符号”。

标签: haskellmonads

解决方案



推荐阅读