如何将用户输入转换为Integer?

问题描述 投票:-1回答:2

Libs.hs:

...
--COMBINED FUNCTION TO VALIDATE A CREDIT CARD NUMBER

validateCard :: Integer -> Bool
validateCard x = compute x `mod` 10 == 0
    where
      compute :: Integer -> Integer
      compute = addNumbers . subDoubles . doubleNumber . cardNumber

--DISPLAY USER MSG IF CARD IS VALID OR NOT
isValid card
  | card == True = "This is a valid credit card!"
  | otherwise = "This card is invalid"

Main.hs:

main :: IO ()
main = do
    putStrLn "Please enter a credit card number:"
    input <- getLine
    isValid $ validateCard (read input :: Integer) --Converted to an Integer

所以我有这段Haskell代码。问题在于该函数采用整数,但用户输入返回字符串([Char])。我曾尝试使用read函数将其转换为Integer,但它与[Char]与预期的IO()类型匹配。基本上我不知道如何将用户输入从字符串转换为整数。任何建议将不胜感激!

string haskell integer converters
2个回答
0
投票

查看isValid函数的类型:它是Bool -> [Char]


0
投票

事实上,信用卡号不是数字。这是一小段数字。您可以使用例如[Int],尽管确实允许无限长的信用卡号,以及大于9或小于0的数字。要获取[Char]-> [Int],可以使用mapChar-> Int。使用Hoogle,我找到了Data.Char.digitToInt

© www.soinside.com 2019 - 2024. All rights reserved.