【发布时间】:2022-01-18 01:57:17
【问题描述】:
所以我在考试中遇到了这个问题,我真的不知道如何匹配数据类型。
我需要让控制台问你一个数字(必须大于 0),直到你说 0 它一直在问,当你说 0 时它必须停止并告诉你你说的最小数字,例如:
Give me a number (0 to finish): 4
Give me a number (0 to finish): 8
Give me a number (0 to finish): 9
Give me a number (0 to finish): 2
Give me a number (0 to finish): 0
The minimum value you said is: 2
我知道这可能很简单,但我真的无法在 :: IO() 类型的单个函数中完成它
这是我目前制作的代码:
minPos:: IO ()
minPos = do
putStrLn ("Give me a number (0 to finish): ")
a <- getLine
minPos' (read a)
minPos' :: [Char] -> IO ()
minPos' a = if (read a) == 0 && (read a) > 0 then
--This should print the lowest number given
do putStrLn "The minimum value you said is: "
else
do
putStrLn ("Give me a number (0 to finish): ")
b <- getLine
minPos' (minPos'' a (read b))
minPos'':: [Char] -> [Char] -> [Char]
minPos'' a b = if (b < a && (read b) > 0) then
minPos' (read b)
else minPos' (read a)
【问题讨论】:
-
如果
0是用户输入的第一个数字会发生什么? -
@JosephSible-ReinstateMonica 我不确定,因为声明中没有指定,但我会像 Willem 那样说“未输入任何值”