Haskell 的语法剥离是回文函数

Grammar stripping isPalindrome function for Haskell

只是为了确保没有混淆。

我不是在问如何写一个普通的回文查找器。

我知道这将是一个重复的问题。

我知道你用的是回文

isPalindrome :: (Eq a) => [a] -> Bool
isPalindrome xs = xs == (reverse xs)

这 return 对于 "madamimadam" 是正确的。

我想不通的是 return 对 "Madam I'm Adam" 成立的函数。

import Data.Char (isAlphaNum, toLower)

isPalindromeStripped :: String -> Bool
isPalindromeStripped xs = isPalindrome (strip xs)

strip :: String -> String
strip xs = map toLower (filter isAlphaNum xs)

这个版本使用strip先把"Madam I'm Adam"变成"MadamImAdam",然后小写成"madamimadam"