我几天前才开始学习Haskell,我目前正在尝试编写一个返回任意数字x的因子的函数。根据我迄今为止对语法的有限了解,这就是我制作的内容
[if x mod i = 0 then i else succ i | i <- [1..x]]
然而,这不起作用。它会在输入'if'时产生解析错误。我已经尝试更改参数并在函数外部定义i,但它总是产生相同的错误,这使我认为它很可能是某种语法错误。任何有关语法和/或正确定义函数的帮助或建议都将非常感激。谢谢。
答案 0 :(得分:3)
因为您使用mod
函数作为中缀运算符,所以需要将其包围在反引号中。比较相等性的运算符不是=
而是==
。您的代码的无错误重写是:
getFactors x = [if x `mod` i == 0 then i else succ i | i <- [1..x]]