Я создаю программу погоды, суть которой очень проста: пользователь вводит язык, на котором будет работать программа, город и дату, а затем я проверяю все это.Но когда пользователь вводит правильный город, но с маленькой буквой, программа выдает ошибку, хотя город введен правильно
Я теперь о toLower
функция, но я не могу использовать его из-за яполучить пару городов типа [(Text,Text)]
let pairsOfCityNames = [ let names = T.splitOn (",") twoNames
[nameForHuman, nameForServer] = L.filter (not . T.null) (names)
in (nameForHuman, nameForServer)
| twoNames <- cityNames
]
(allNamesForHumans, _) = unzip pairsOfCityNames
И я получу что-то вроде:
[ ("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