String 计算字符串列表中的回文数Haskell

String 计算字符串列表中的回文数Haskell,string,list,haskell,palindrome,String,List,Haskell,Palindrome,函数countPalindromes接收字符串列表,并返回有多少字符串是回文的计数 isPalindrome :: String -> Bool isPalindrome w = w == reverse w countPalindromes :: [String] -> Int countPalindromes ss = length filter (== isPalindrome) ss 我知道函数长度应用于两个参数,而不是一个参数。我只是不知道如何解决这个问题?您可以使用

函数countPalindromes接收字符串列表,并返回有多少字符串是回文的计数

isPalindrome :: String -> Bool
isPalindrome w = w == reverse w

countPalindromes :: [String] -> Int
countPalindromes ss = length filter (== isPalindrome) ss 

我知道函数长度应用于两个参数,而不是一个参数。我只是不知道如何解决这个问题?

您可以使用括号来影响函数应用程序:

countPalindromes ss = length (filter (== isPalindrome) ss)
括号将使整个表达式
filter(=isAlindrome)ss
分组为一个术语,并将其结果传递给
length


这将使您进入下一个错误;我鼓励你仔细阅读它,看看你自己是否能从这里取得进展,然后如果你花15分钟试图理解它而没有取得进展,就提出一个新问题。

我不明白你的意思。此代码相当于
长度(过滤器(=isAlindrome)ss)
。你怎么说
length
应用于两个参数?我认为第一个问题是
过滤器(=isAlindrom)
。为什么您希望列出字符串中的所有回文?啊,确实,这里缺少了一个
映射
。@StéphaneLaurent否,
长度过滤器(=isAlindrome)ss
被解析为
((长度过滤器)(=isAlindrome))ss
@StéphaneLaurent:不,而且问题有点不明确,我们计算重叠回文吗?我很高兴在指出
过滤器(=isAlindrome)ss
中的错误之前仔细阅读了您的答案。