用haskell问题将letter改为lowercast



我有一个问题:"编写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))

您只将比较的相反部分小写,而应该将两者都小写。

最新更新