【发布时间】:2023-04-10 18:17:01
【问题描述】:
我有以下功能:
myMaximum [] = error "There is no such thing as 'maximum' in an empty list."
myMaximum [x] = x
myMaximum (x:xs) = if x >= tailMax
then x
else tailMax
where tailMax = myMaximum xs
当我运行myMaximum [1..5] 时我工作得很好,但是当我运行myMaximum [5..1] 时它会抛出第一行定义的错误。如果我取出第一行,它会抱怨myMaximum 上存在非详尽的模式。但为什么这种模式不是详尽无遗的呢?以及如何使用[1..5] 调用它工作得很好并且[5..1] 显然会导致myMaximum 的空列表参数?
【问题讨论】:
-
顺便说一句,你应该把你的错误信息改成
"[name]: [cause]"的标准格式,所以应该是error "myMaximum: empty list" -
@AJFarmar 感谢您的提示!
标签: haskell functional-programming pattern-matching