Haskell二次方程根

时间:2011-10-17 13:46:00

标签: haskell

Haskell程序显示了两个根,并且在方程没有实根或者所有值都作为根的情况下应该返回零。

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)

错误:file:。\ roots.hs:4 - 输入中的语法错误(意外符号“y”) 有什么想法吗?

1 个答案:

答案 0 :(得分: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)