我有一个练习要做,但是由于我对这门语言很陌生,因此我找不到任何有关如何去做的方法。Haskell函数测试一个列表是否重复(重复)元素
我有这个功能“重复”,这是根据本段给出的定义。它接收一个Int列表并返回一个Bool值。它应该检查列表是否有任何重复的元素。如果是这样,那就是真的,如果不是的话,那是假的。还有一件事:我必须通过递归定义函数,所以它必须是递归函数。将不胜感激任何帮助。
repeated :: [Int] -> Bool
EDIT1:到目前为止,我只设法只有这一数额的代码
repeated :: [Int] -> Bool
repeated [] = False
repeated (h:t) =
这使我回空单成功。其余的,我至今还没有弄清楚......
编辑2:忘记单数名单...此外,可能的答案?
repeated :: [Int] -> Bool
repeated [] = False
repeated [_] = False
repeated (h:t) = if elem h t then True
else repeated t
这几乎就是它。我编译过.hs,它工作的很好。谢谢大家的建议和提示! :)
这是排序还是允许您先排序? – Carsten 2014-10-06 13:59:27
Carsten,我认为它已经排序了。它没有指定,但是... – darkwing 2014-10-06 14:03:29
@CarstenKönig如果列表是无限的呢?你仍然可以编写这个函数来终止一个无限的列表(假设它有重复的),那么不需要先排序。 – bheklilr 2014-10-06 14:06:19