很难解释这一点,但我会尝试。我想我把我的方法和一些 C 混淆了,但它是这样的:
我想检查一个列表是否完整,如下所示:
main> check 1 [1,3,4,5]
False
main> check 1 [1,2,3,4]
True
它是一个有限列表,并且不必对列表进行排序。但在列表中,最有可能错过的数字是 True。在第一种情况下,它是数字 2。
这是我的版本,但它甚至没有编译。
check :: Eq a => a -> [a] -> Bool
check n [] = False
check n x | n/=(maximum x) = elem n x && check (n+1) x
| otherwise = False