2

我对 Haskell 完全陌生,并尝试按照讲义中的脚本进行操作。我创建了一个名为 Lecture.hs 的文件

root (a, b, c) = ((-b -r)/e, (-b + r)/e))
 where d = b*b - 4*a*c
       r = sqrt d
       e = 2*a

当我加载这个文件拥抱它时

ERROR "lecture.hs":3 - Syntax error in input (unexpected `=')

当我将它加载到 ghci 时,它显示

[1 of 1] Compiling Main             ( lecture.hs, interpreted )

lecture.hs:3:14: parse error on input `='
Failed, modules loaded: none.

请帮帮我。谢谢!

4

1 回答 1

5

如粘贴在这里,您的代码段在语法上是有效的。在任何情况下,以下方法肯定会起作用:

root (a, b, c) = ((-b -r)/e, (-b + r)/e)
    where
    d = b*b - 4*a*c
    r = sqrt d
    e = 2*a

自然,缩进样式在很大程度上是个人选择。我喜欢where单独放置一行,因为这样我可以在四个空格步骤中以可预测的方式缩进代码。无论您选择哪种样式,都不要使用制表符来缩进,因为这会导致很多混乱。

于 2013-10-17T16:12:06.880 回答