2011-10-17 11 views
4

2つのルーツを示すハスケルプログラムであり、式が実根を持たない場合、またはすべての値が根を持つ場合はゼロを返す必要があります。ハスケル2次方程式のルート

functionRoot :: Float -> Float -> Float -> (Float,Float)   
functionRoot a b c = if d < 0 then error "0" else (x, y) 
         where x = e + sqrt d/(2 * a) 
         y = e - sqrt d/(2 * a) 
         d = b * b - 4 * a * c 
         e = - b/(2 * a) 

ERROR:ファイル:\ roots.hs:4 - 入力の構文エラー(予期しない記号 "Y") 任意の考え?

答えて

8

whereの定義をさらにインデントする必要があります。

functionRoot a b c = if d < 0 then error "0" else (x, y) 
         where 
          x = e + sqrt d/(2 * a) 
          y = e - sqrt d/(2 * a) 
          d = b * b - 4 * a * c 
          e = - b/(2 * a) 
+0

?同じコードですか?エラーは予期しないシンボル "y"ですか? –

+3

これらはさらにインデントされる必要があります。最初の空白以外のトークンは、ブロックの字下げを設定します。この場合、これは最初のバインディングの 'x'であるため、残っているバインディングはすべてその' x'と一直線に並ばなければなりません。 –

+0

ああ、そうですね。 –