为什么GHCi抱怨where where子句?

时间:2014-07-08 10:39:55

标签: haskell syntax

当我写这样的代码时:

Prelude> let f = (+1) . (*k)
Prelude|     where k = 2
Prelude|

我有这样的错误:

<interactive>:46:5: parse error on input 'where'

1 个答案:

答案 0 :(得分:3)

那是因为你试图在提示符下定义多行函数。您可以查看此链接以了解如何执行此操作:

How do I use multiple where clauses in GHCi?

但请注意,这可能不适用于所有版本。我有GHC版本7.4.2并面临同样的问题。

您可以将+m标志用于多行函数定义,如下所示:

Prelude> :set +m
Prelude> let f = (+1) . (*k)
Prelude|       where k = 2
Prelude|

这适用于我的系统。

否则,您可以将函数拆分为2:

let k = 2
let f = (+1) . (*k)