Haskell - 使用用户输入调用所有其他函数的主要功能

时间:2015-11-07 15:19:27

标签: function haskell if-statement compiler-errors

我是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;上解析错误。

有人可以向我解释我做错了什么。

1 个答案:

答案 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()