2011-12-18 11 views
0

次のアルゴリズムは2次方程式のルートを計算することになっていますが、コンパイルするとコンパイルエラーが発生します。 チュートリアルからコピーしました。ハスケル方程式ルーツコンパイルエラー

2 roota.hs:5:20: parse error on input `=' 

roots (a,b,c) = 
     if d < 0 then error "sorry" else (x1, x2) 
     where x1 = e + sqrt d/(2 * a) 
      x2 = e - sqrt d/(2 * a) 
      d = b * b - 4 * a * c 
      e = - b/(2 *a) 

回答ありがとうございます。

+1

を素晴らしいのhaskellではない - それもコピー+ペーストの人が:) – Ingo

答えて

5

インデントに問題があります。

roots (a,b,c) = 
     if d < 0 then error "sorry" else (x1, x2) 
     where 
      x1 = e + sqrt d/(2 * a) 
      x2 = e - sqrt d/(2 * a) 
      d = b * b - 4 * a * c 
      e = - b/(2 *a) 

も参照してくださいa question about indentationととan article from a Haskell Wikibookを試してみてください。

+0

クール、おかげで:))と思わせます – flatronka

1

ここで、はそれ自身では線上にある必要はない。これは動作します:

roots (a,b,c) = 
     if d < 0 then error "sorry" else (x1, x2) 
     where x1 = e + sqrt d/(2 * a) 
       x2 = e - sqrt d/(2 * a) 
       d = b * b - 4 * a * c 
       e = - b/(2 *a) 

かさえ、この:

roots (a,b,c) = 
     if d < 0 then error "sorry" else (x1, x2) where 
x1 = e + sqrt d/(2 * a) 
x2 = e - sqrt d/(2 * a) 
d = b * b - 4 * a * c 
e = - b/(2 *a)