【问题标题】:Using scandinavian letters Å Ä Ö in a haskell program在 haskell 程序中使用斯堪的纳维亚字母 Å Ä Ö
【发布时间】:2016-06-08 02:26:30
【问题描述】:

我正在编写一个 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))

【问题讨论】:

  • 您需要密码是什么意思?你不能只用瑞典语写字符串吗?
  • 您是否尝试过将它们包含在源代码中?
  • 到目前为止,我已经更新了我的工作。我必须补充一点,我在这方面绝对是新手。我希望对话能够问“你想切换到瑞典语吗”,如果是,我需要帮助写一些东西,使瑞典语字符 å ä ö 成为可能。截至目前,例如 å 写为 \229.. 感谢您的关注!
  • 您应该使用putStrLn 而不是print。详情请阅读GHC: Display of unicode characters
  • 谢谢大家,它有效!!!

标签: haskell symbols letters


【解决方案1】:

您正在使用print 打印您的字符串。这不仅会使用转义码打印非 ASCII 字符(以及不可打印字符和换行符),还会将字符串括在引号中。

出于非调试目的,您应该始终使用putStrLn,而不是print 来打印字符串。这不仅不会弄乱变音符号,还可以去掉不需要的引号并允许您打印换行符。

【讨论】:

  • @Sfranss:如果它解决了您的问题,请确保接受此答案(左侧向下投票箭头下方的绿色小标记)。
猜你喜欢
  • 2014-11-03
  • 2018-11-14
  • 2014-06-10
  • 1970-01-01
  • 2018-08-14
  • 2016-04-10
  • 1970-01-01
  • 1970-01-01
  • 2011-08-28
相关资源
最近更新 更多