我正在尝试编写一个简单的函数,该函数接受三个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
任何帮助将不胜感激
答案 0 :(得分:3)
你错过了else
。每个if
都需要then
和else
,否则将无法确定返回值,例如如果x
不在这里会发生什么?
add3IfEven x = if even x then x + 3
但是,您的编译器(Hugs)不会使用您的实际代码,而是使用大括号将其转换为其他代码:
{if … then … else … }
由于您错过了上次else
,}
是意料之外的。因此,请务必添加正确的else
案例。顺便说一句,您可以使用maximum [x + y, x + z, y + z]
简单地解决此练习。