2015-11-07 79 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

相關問題