我创建了这个haskell函数来从列表中删除奇数,并尝试在ghci中。尽管我已启用多行模式并使用4个空格作为缩进,但我仍然收到以下错误。让多行haskell函数工作在ghci
Prelude> :set +m
Prelude> let removeOdds nums =
Prelude| if null nums
Prelude| then []
Prelude| else
Prelude| if (mod (head nums)/2) == 0
Prelude| then (head nums) : (removeOdds(tail nums))
Prelude| else removeOdds(tail nums)
Prelude|
:11:5: 解析错误(可能是不正确的缩进或不匹配的括号)
我读this页有关公共mistable新手的会让我改变了我的代码如下
Prelude> let removeOdds nums =
Prelude| do if null nums
Prelude| then []
Prelude| else
Prelude| do if mod((head nums)/2) == 0
Prelude| then head nums: removeOdds(tail nums)
Prelude| else removeOdds(tail nums)
Prelude|
<interactive>:47:5:
parse error (possibly incorrect indentation or mismatched brackets)
现在我结束了一个新的错误。在哈斯克尔看来,缩进是一件困难的事情。
顺便说一句 - 在ghci中输入多行语句是一种痛苦。我通常使用一个编辑器窗口并行运行ghci的控制台窗口。用'ghci program.hs'调用ghci。在编辑器中更改它后,使用':r'重新加载'program.hs'。还可以看看':e'和':set editor'命令。请参阅GHCi手册中的[__Loading source files__](https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/ghci.html#loading-source-files)。 – ErikR
多行函数的一个常见来源是重新发明轮子:'let removeOdds = filter even'。 – chepner