【问题标题】:Count number of palindromes in a list of strings, Haskell计算字符串列表中的回文数,Haskell
【发布时间】:2018-03-26 19:10:04
【问题描述】:

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

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

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

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

【问题讨论】:

  • 我不关注你。此代码等效于length (filter (== isPalindrome) ss)。你说length 应用于两个参数是什么意思?
  • 我认为第一个问题是filter (== isPalindrom)。为什么你期望它列出字符串中的所有回文?
  • 啊,确实,这里缺少map
  • @StéphaneLaurent 不,length filter (== isPalindrome) ss 被解析为((length filter) (== isPalindrome)) ss
  • @StéphaneLaurent:不,而且这个问题有点不明确,我们计算重叠回文吗?

标签: string list haskell palindrome


【解决方案1】:

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

countPalindromes ss = length (filter (== isPalindrome) ss)

括号会将整个表达式filter (== isPalindrome) ss 组合成一个词,并将其结果传递给length

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

【讨论】:

  • 很高兴在指出filter (== isPalindrome) ss 中的错误之前仔细阅读了您的回答。
猜你喜欢
  • 2018-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-27
  • 2017-05-30
相关资源
最近更新 更多