我正在尝试在 ghci 中定义任何跨越多行的简单函数,以以下为例:
let abs n | n >= 0 = n | otherwise = -n
到目前为止,我已经尝试在第一行之后按 Enter:
Prelude> let abs n | n >= 0 = n Prelude> | otherwise = -n <interactive>:1:0: parse error on input `|'
我也尝试使用:{and:}命令,但我没有走远:
:{
:}
Prelude> :{ unknown command ':{' use :? for help.
我在 Linux 上为 Haskell 98 使用 GHC Interactive 6.6 版,我缺少什么?
对于守卫(如您的示例),您可以将它们全部放在一条线上并且它可以工作(守卫不关心间距)
如果您想编写具有参数模式匹配的多个定义的函数,如下所示:
fact 0 = 1 fact n = n * fact (n-1)
然后您将使用带有分号的大括号分隔定义
let { fact 0 = 1 ; fact n = n * fact (n-1) }