/ / zmień literę na niższą z problemem haskell - haskell

zmień literę na niższy z problemem haskell - haskell

mam to pytanie: „Napisz funkcję Haskell isPalindrome :: [Char] -> Bool rozpoznawać palindromy takie jak „Pani, jestem Adam” Zwróć uwagę, że przed porównaniem musisz zrobić wielkie litery i wyrzucić interpunkcję. ”

piszę ten kod w 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))

wyciąć:

Strona główna> isPalindrome „DSD”

Fałszywy

Strona główna> isPalindrome "dsd"

Prawdziwe

to nie dlatego daje mi fałszywe wielkie litery?

Odpowiedzi:

3 dla odpowiedzi № 1

Z powodu isPalindrome xs = xs == (reverse (lower xs))

Małe litery mają tylko odwróconą część porównania, a oba powinny być pisane małymi literami.