在haskell中输入一个String我们使用getLine并输入一个我们使用getChar的字符,但用什么来输入任何整数或浮点数?
我经常搜索并找到了,但它也使用getLine作为整数。 This is the link where I found
它确实有效,因为我在我的代码中使用了它
代码:
main = do
putStrLn "Enter any number : "
num <- getLine
putStrLn ("number is "++num)
输出:
F17BCSE206>main
Enter any number :
5
number is 5
:: IO ()
但是输入我们使用getLine的整数,我的思绪无法满足。是否有任何其他更精确的方法来输入整数和浮点数使用输入输出而不是func :: Int -> Int
haskell中是否存在getInt或getFloat以输入整数或浮点数?
有谁知道,所以请帮助我。
答案 0 :(得分:1)
您可以定义与getNum
相同的函数readLn
,但仅限于具有Num
实例的类型。
getNum :: (Read a, Num a, Show a) => IO a
getNum = readLn
main = do
putStrLn "Enter any number: "
num <- getNum
-- or just inline the type annotation:
-- num <- (readLn :: (Read a, Num a, Show a) => IO a)
putStrLn ("number is " ++ show num)
Show
约束只是为了轻松为最后putStrLn
创建字符串;它与解析输入无关。
getNum
无法将输入字符串解析为数字, readLn
将引发错误,因此这可能是最不好的方法,但这很简单。