gpt4 book ai didi

haskell 错误 "parse error on input ‘if'“

转载 作者:行者123 更新时间:2023-12-02 06:28:43 25 4
gpt4 key购买 nike

我有一个关于 Haskell 的问题,我试图在一个列表中只对偶数的一半做一个函数,并返回最终列表,其中只有偶数被修改(减半)与元素的其余部分保持不变。

但是当我尝试编译我的代码时,我给出了一个错误,指出“错误:输入‘if’时出现解析错误”,我找不到解决方案。

halfEvens :: [ Int ] -> [ Int ]
halfEvens xs = [x|x<-xs]
if x mod 2 == 0
the x = x / 2
else
x = x

最佳答案

您的代码有多个问题:

  • [x|x<-xs]没有做任何有用的事情。这只会评估为 xs .
  • 如果您使用的是 mod作为中缀运算符,它需要反引号
  • 您不能重新分配变量。 then x = x / 2x = x在 Haskell 中是非法的。

但主要问题是您有一个空列表理解 ( [x|x<-xs] ),带有 if表达只是漂浮在它下面。我相信你的意图是把 if领悟之内。像这样的东西:

halfEvens :: [Int] -> [Int]
halfEvens xs = [if x `mod` 2 == 0 then x `quot` 2 else x | x <- xs]

变化:


main = do
putStrLn . show $ halfEvens [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]

[1,1,3,2,5,3,7,4,9,0]

不过,您的代码显示出对 Haskell 的一些严重误解。我建议坐下来阅读一本好书并尝试所有示例。 Haskell 不是一种简单的语言。不要试图匆忙完成它。

关于 haskell 错误 "parse error on input ‘if'“,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47380157/

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