输入'if'解析错误 - 为什么?

时间:2016-07-19 16:51:47

标签: parsing haskell

我不知道为什么我的程序不起作用,我的ghci总是在输入if"上显示以下"解析错误。 这是我的代码:

import Data.List
import System.IO

bonuspunkte c d a b =

if (a > 480) then replace a "480" else use a
if (b > 375) then replace b "375" else use b    

if (c == True) && (d == True)   

then (11.5 *(a/480)) + (8.5 *(b/375))
else 0

我也不太确定"替换"操作,我的想法是,如果a大于480,那么你应该继续使用480。与b相同。 如果有人能帮助我,我将非常感激。

1 个答案:

答案 0 :(得分:4)

您无法在Haskell中更改变量绑定的值。但是,您可以创建一个新的变量名称。

bonuspunkte a b c d =
  let a' = min 480 a
      b' = min 375 b
  in if c && d then (11.5 *(a'/480)) + (8.5 *(b'/375))
               else 0

请注意变量a'b' - 而非ab - 如何在if-then-else语句的公式中使用。

还要注意缩进。像Python一样,Haskell是一种缩进的重要语言。