Использование скандинавских букв Å Ä Ö в программе на Haskell
Я пишу программу на Haskell как задание для школы. Это программа знакомств на английском языке, которая в конечном итоге приводит к "чату" с вашим идеальным партнером. Я хочу, чтобы чат мог переключаться и писать по-шведски, что означает, что программе нужен код для писем. Как я могу это сделать?
import Data.Char
kons = "qwrtpsdfghjklzxcvbnmQWRTPSDFGHJKLZXCVNM"
veral = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
gemen:: Char -> Char
gemen 'A' = 'a'
gemen 'B' = 'b'
gemen 'C' = 'c'
gemen 'D' = 'd'
gemen 'E' = 'e'
gemen 'F' = 'f'
gemen 'G' = 'g'
gemen 'H' = 'h'
gemen 'I' = 'i'
gemen 'J' = 'j'
gemen 'K' = 'k'
gemen 'L' = 'l'
gemen 'M' = 'm'
gemen 'N' = 'n'
gemen 'O' = 'o'
gemen 'P' = 'p'
gemen 'Q' = 'q'
gemen 'R' = 'r'
gemen 'S' = 's'
gemen 'T' = 't'
gemen 'U' = 'u'
gemen 'V' = 'v'
gemen 'W' = 'W'
gemen 'X' = 'x'
gemen 'Y' = 'y'
gemen 'Z' = 'z'
gemen _ = 'a'
dial = do
print "Hello, what's your name?"
name <- getLine
print ("Hi there " ++ name ++ "!")
print "Where do you live?"
place <- getLine
print ("Oh really " ++ name ++ ", so do I!")
print ("Do you wanna switch to swedish?")
svar <- getLine
if svar == "yes" then print ("Kanon, da gor vi det!") else print ("English is just as good!")
perify :: [Char] -> [Char]
perify xs
| (head (xs)) == 'P' = ", " ++ xs
| (head (xs)) `notElem` kons = ", P" ++ [(gemen (head (xs)))] ++ (tail (xs))
| otherwise = ", P" ++ (tail (xs))
1 ответ
Вы используете print
распечатать ваши строки. Это будет не только печатать не-ASCII-символы (а также непечатаемые символы и разрывы строк) с использованием их escape-кодов, но также заключать строку в кавычки.
В целях отладки вы всегда должны использовать putStrLn
не print
печатать строки. Это не только не испортит умлауты, но и избавит от ненужных кавычек и позволит вам печатать новые строки.