我遇到了嵌套它们的条件问题。我是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
给出的错误是:“在代码中表示的点处解析输入”|“上的错误。如何解决这个问题的最佳方法是什么?
谢谢并抱歉英语。
答案 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
但我认为第一个带有单独保护功能的例子更清晰。