我有一个问题:"编写Haskell函数is回文::[Char]->Bool识别像"夫人,我是亚当"这样的回文请注意,在进行比较之前,您需要将所有大写字母小写,并去掉标点符号。"
我用haskell:写这段代码
import Char
lower :: String -> String
lower xs = [tolow ch| ch<-xs]
tolow :: Char -> Char
tolow ch
| isUpper ch = chr (ord ch + 32)
| otherwise = ch
isPalindrome :: [Char] -> Bool
isPalindrome xs = xs == (reverse (lower xs))
excute:
Main>isPalindome"DSD"
错误
Main>isPalindome"dsd"
真实
为什么它总是用大写字母给我假?
因为isPalindrome xs = xs == (reverse (lower xs))
您只将比较的相反部分小写,而应该将两者都小写。