如何在ghci中跨多行定义函数?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (29)

我试图在ghci中定义跨越多行的任何简单函数,例如:

let abs n | n >= 0 = n
          | otherwise = -n

到目前为止,我尝试在第一行之后按回车键:

Prelude> let abs n | n >= 0 = n
Prelude>           | otherwise = -n
<interactive>:1:0: parse error on input `|'

我还尝试使用:{:}命令:

Prelude> :{
unknown command ':{'
use :? for help.

我在Linux上使用GHCInteractive6.6版本的Haskell 98,我缺少什么?

提问于
用户回答回答于

这样就行了:

let abs n | n >= 0 = n | otherwise = -n

如果您想用多个定义编写函数,那么参数上的模式匹配,如下所示:

fact 0 = 1
fact n = n * fact (n-1)

然后,您将使用带分号分隔定义的大括号。

let { fact 0 = 1 ; fact n = n * fact (n-1) }
用户回答回答于

Prelude> :set +m
Prelude> let fac 0 = 1
Prelude|     fac n = n * fac (n-1)
Prelude|
Prelude> fac 10
3628800

扫码关注云+社区