Haskell 如何转换[(Data.Text.Internal.Text,Data.Text.Internal.Text)]->;正文
我制作了一个天气程序,其本质非常简单:用户输入程序工作的语言、城市和日期,然后我检查所有内容。但是,当用户输入正确的城市,但带有一个小写字母时,程序会给出一个错误,尽管城市输入正确 我现在了解了Haskell 如何转换[(Data.Text.Internal.Text,Data.Text.Internal.Text)]->;正文,haskell,haskell-stack,Haskell,Haskell Stack,我制作了一个天气程序,其本质非常简单:用户输入程序工作的语言、城市和日期,然后我检查所有内容。但是,当用户输入正确的城市,但带有一个小写字母时,程序会给出一个错误,尽管城市输入正确 我现在了解了toLower函数,但我无法使用它,因为我在[(文本,文本)] 我想当用户进入正确的城市,但与一个小字母,该程序的工作 以及我如何检查它: cityFromUser <- TIO.getLine let lovercaseForCity = T.toLower cityFromUser
toLower
函数,但我无法使用它,因为我在[(文本,文本)]
我想当用户进入正确的城市,但与一个小字母,该程序的工作
以及我如何检查它:
cityFromUser <- TIO.getLine
let lovercaseForCity = T.toLower cityFromUser
cityNameForServer <- case L.lookup lovercaseForCity pairsOfCityNames of
Nothing -> do
TIO.putStrLn $ messageErrorWrongCity phrasesForUser
exitFailure
Just cityNameForServer -> return cityNameForServer
TIO.putStrLn cityNameForServer
cityFromUser返回cityNameForServer
TIO.putStrLn cityNameForServer
如果我理解正确,此配对列表旨在将“ararat”
转换为“ararat”
,以补偿用户缺少标题大小写,而与您通信的服务器只接受给定城市名称的一个大写字母
但我的理解可能是错误的
您可以使用:
cityFromUser如果我理解正确,它基本上看起来像一个地图/字典吗?
[ ("Aragatsotn", "Aragatsotn")
, ("Ararat", "Ararat")
, ("Armavir", "Armavir")
, ("Dilijan", "Dilijan")
, ("Gegharkunik", "Gegharkunik")
, ("Gyumri", "Gyumri")
, ("Kotayk", "Kotayk")
, ("Shirak", "Shirak")
, ("Syunik", "Syunik")
, ("Vanadzor", "Vanadzor")
, ("Yerevan", "Yerevan")
]
cityFromUser <- TIO.getLine
let lovercaseForCity = T.toLower cityFromUser
cityNameForServer <- case L.lookup lovercaseForCity pairsOfCityNames of
Nothing -> do
TIO.putStrLn $ messageErrorWrongCity phrasesForUser
exitFailure
Just cityNameForServer -> return cityNameForServer
TIO.putStrLn cityNameForServer