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 № 1Z 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.