Haskell函数,该函数接受元素列表,如果列表包含重复项,则返回true;如果列表不包含重复项,则返回flase

Haskell函数,该函数接受元素列表,如果列表包含重复项,则返回true;如果列表不包含重复项,则返回flase,haskell,Haskell,我试图创建一个haskell函数,该函数接受元素列表,如果列表中包含重复项,则返回true;如果不包含重复项,则返回false 这是我所拥有的。。。我得到了一个错误,重复具有不同数量的参数 duplicates :: Eq a => [a] -> Bool duplicates _ []= False duplicates (x:xs) = callback n xs where callback = if x == n then elem else duplicates dup

我试图创建一个haskell函数,该函数接受元素列表,如果列表中包含重复项,则返回true;如果不包含重复项,则返回false

这是我所拥有的。。。我得到了一个错误,重复具有不同数量的参数

duplicates :: Eq a => [a] -> Bool
duplicates _ []= False
duplicates (x:xs) = callback n xs
where callback  = if x == n then elem else duplicates

duplicatesTests = [
                 not $ duplicates [1..10]
                ,duplicates "ABCAD"
                ,not $ duplicates "BAD"
                ,duplicates [1,2,1]
              ]
一定是

duplicates :: Eq a => [a] -> Bool
duplicates [] = False
duplicates (x:xs) = callback n xs
    where        -- callback       = if x == n then elem else duplicates
                    callback n xs  = if x == n then elem else duplicates
n必须显示为回调函数的参数,才能在回调函数体中引用它

但在回调调用中,n超出了范围。换句话说,它没有在任何地方定义


通常,您使用的任何名称都必须来自某个地方。

您的第一个duplicates子句有两个参数:u和[]。请不要修改问题的内容。这使现有答案无效。如果您发现第二个困惑点,但是关于相同的代码,请打开另一个问题。谢谢您的帮助。我试过了,收到了一个重复的错误,输入'bool',如果你有一个新问题,打开一个新问题。请不要在评论中提出问题。