在Haskell中编写因子函数时解析错误

时间:2017-04-22 14:01:53

标签: haskell

我几天前才开始学习Haskell,我目前正在尝试编写一个返回任意数字x的因子的函数。根据我迄今为止对语法的有限了解,这就是我制作的内容

[if x mod i = 0 then i else succ i | i <- [1..x]]

然而,这不起作用。它会在输入'if'时产生解析错误。我已经尝试更改参数并在函数外部定义i,但它总是产生相同的错误,这使我认为它很可能是某种语法错误。任何有关语法和/或正确定义函数的帮助或建议都将非常感激。谢谢。

1 个答案:

答案 0 :(得分:3)

因为您使用mod函数作为中缀运算符,所以需要将其包围在反引号中。比较相等性的运算符不是=而是==。您的代码的无错误重写是:

getFactors x = [if x `mod` i == 0 then i else succ i | i <- [1..x]]