String 计算字符串列表中的回文数Haskell
函数countPalindromes接收字符串列表,并返回有多少字符串是回文的计数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 我知道函数长度应用于两个参数,而不是一个参数。我只是不知道如何解决这个问题?您可以使用
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
中的错误之前仔细阅读了您的答案。