2011-12-18 70 views
0

以下算法应该计算二阶方程根,但编译它会产生编译错误。 我从教程中复制了它。Haskell方程根编译错误

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 2011-12-18 15:45:59

回答

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)