2016-11-22 7 views
0

私は3つのInt値をとり、これらの3つのうちの最小値と最大値の合計を返す単純な関数を書こうとしています。Haskellの式エラー(予期しない '}')

マイコード:

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) 

コードを返すすべてのヘルプは、あなたがelseが欠落している

+0

どのコンパイラ/インタープリタを使用しますか?それは言われているように、すべての「then」は「else」を必要とします。また、Haskellは大文字と小文字を区別します。 – Zeta

答えて

3

をいただければ幸いですsyntax error in expression (unexpected '}'), possibly due to bad layout

エラー。 ifはすべてthenelseの両方を必要とします。そうでない場合、戻り値は決定されません。 xがここにいなくてもどうなるでしょうか?

add3IfEven x = if even x then x + 3 

しかし、あなたのコンパイラ(抱擁)は、代わりにそれは中括弧で何か他のものに変換し、あなたの実際のコードを使用していません:

{if … then … else … } 

あなたはその最後のelseが欠落しているので、 }は予期せぬものです。正しいelseケースを必ず追加してください。ところで、あなたは単にmaximum [x + y, x + z, y + z]でこの運動を解決することができます。

+0

私は希望の結果が '最小[x、y、z] +最大[x、y、z]'だと思います。 – chepner

関連する問題