2015-11-07 80 views
0

我是Haskell的新手,发现自从来自Java以后,有点混乱。Haskell - 使用用户输入调用所有其他函数的主要功能

我想实现一个函数,提示用户在命令行中输入一个数字,然后执行与输入相关的函数,如果没有输入,则默认为第一个函数。

我遇到了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)) 

我得到编译器错误“解析输入错误”if'“。

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

回答

2

你需要一个do添加到当时和else子句:

if ... 
    then do 
    putStr ... 
    ... 
    else do 
    putStr ... 
    ... 

此外,确保if语句同样缩进为xs <- ...声明 - 不要使用制表符。

例如为:

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() 
+0

加时做到每节我收到了同样的错误。 –

+0

答复已更新。 – ErikR

相关问题