gpt4 book ai didi

haskell - 让 Multiline haskell 函数在 ghci 中工作

转载 作者:行者123 更新时间:2023-12-05 09:20:02 28 4
gpt4 key购买 nike

我创建了这个 haskell 函数来从列表中删除奇数,并在 ghci 中尝试。尽管我启用了多行模式并使用 4 个空格进行缩进,但我仍然收到以下错误。

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关于新手常见的错误页面,我更改了我的代码如下

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)

现在我以一个新的错误结束了。看来缩进在 haskell 中是一件很难解决的事情。

最佳答案

您的 if 语句需要至少缩进一个空格:

Prelude> let removeOdds nums =
Prelude| if null nums

Complete example:

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|
Prelude>

关于haskell - 让 Multiline haskell 函数在 ghci 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38886002/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com