这个并不容易解释,但我会尝试。我想我可能把我的方法和一些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