Haskell嵌套条件

时间:2016-02-19 18:18:04

标签: haskell conditional

我遇到了嵌套它们的条件问题。我是Haskell的新手,似乎在我的书或网上找不到类似的东西。这是我的一个例子:

someFunc s n r c e i
    | (i < s) 
    >>> | (e < s) = someFunc (changes go here conditions are met)
        | otherwise = createList (different set of conditions go here)
    | otherwise = n

给出的错误是:“在代码中表示的点处解析输入”|“上的错误。如何解决这个问题的最佳方法是什么?

谢谢并抱歉英语。

1 个答案:

答案 0 :(得分:1)

你不能以这种方式筑巢,但将它分成两个功能可能更清晰:

someFunc s n r c e i
    | (i < s) = innerCondition s n r c e i
    | otherwise = n

innerCondition s n r c e i
    | (e < s) = someFunc (changes go here conditions are met)
    | otherwise = createList (different set of conditions go here)

或者,您可以使用if语句将其嵌套在同一函数中:

someFunc s n r c e i
    | (i < s) =
        if (e < s) then
            someFunc (changes go here conditions are met)
        else
            createList (different set of conditions go here)
    | otherwise = n

但我认为第一个带有单独保护功能的例子更清晰。