Haskell中表达式中的语法错误(意外'}')

时间:2016-11-22 12:12:44

标签: haskell

我正在尝试编写一个简单的函数,该函数接受三个Int值并返回这三个中的最小和最大整数之和。

我的代码:

summinmax3 :: Int -> Int -> Int -> Int
summinmax3 x y z = 
  if (x > y && z < y) 
    then (x + z)
  else if (y > x && z < x) 
    then (y + x)
  else if (z > x && y < X) 
    then (y + z)

代码返回错误syntax error in expression (unexpected '}'), possibly due to bad layout

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:3)

你错过了else。每个if都需要thenelse,否则将无法确定返回值,例如如果x不在这里会发生什么?

add3IfEven x = if even x then x + 3

但是,您的编译器(Hugs)不会使用您的实际代码,而是使用大括号将其转换为其他代码:

{if … then … else … }

由于您错过了上次else}是意料之外的。因此,请务必添加正确的else案例。顺便说一句,您可以使用maximum [x + y, x + z, y + z]简单地解决此练习。