我是Haskell的新手,从Java开始就发现它有点令人困惑。
我正在尝试实现一个函数,在命令行中提示用户输入数字,然后执行与输入相关的函数,如果没有输入则默认为第一个函数。
我对if函数有问题,编译器一直给我错误,我不知道为什么。
main = do
putStr "Enter question number: "
xs <- getLine
if (xs == "3")
then
putStr "number of toppings: "
top <- getLine
putStr "diameter of pizza in cm2: "
size <- getLine
(pizzaPrice (top size))
else
putStr "Enter 3 numbers: "
args <- getLine
(numAbove1 (args))
我收到编译错误&#34;在输入'if'&#34;上解析错误。
有人可以向我解释我做错了什么。
答案 0 :(得分:2)
您需要在then和else子句中添加do
:
if ...
then do
putStr ...
...
else do
putStr ...
...
另外,请确保if
语句缩进与xs <- ...
语句相同的数量 - 并且不要使用标签。
E.g:
main = do
putStr "Enter question number: "
xs <- getLine
if (xs == "3")
then do
putStr "number of toppings: "
top <- getLine
putStr "diameter of pizza in cm2: "
size <- getLine
return ()
else do
putStr "Enter 3 numbers: "
args <- getLine
return()