2017-04-22 80 views
0

前几天我才开始学习Haskell,而我正在尝试编写一个返回任意数字x的因子的函数。根据我迄今为止对语法有限的知识,这是我所生产的在Haskell中编写因子函数时出现解析错误

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

但是,这是行不通的。它在输入'if'上产生一个解析错误。我试图改变参数并在函数外定义我,但它总是产生相同的错误,这使我认为它很可能是某种语法错误。任何关于语法和/或正确定义函数的帮助或建议都将不胜感激。谢谢。

+0

Iirc,你需要有一些东西之前,如果说什么会产生理解。 – Carcigenicate

+0

你是在ghci中做这个还是在一个文件中? – melpomene

+0

这是在GHCi – amott42

回答

3

由于您使用mod函数作为中缀运算符,因此您需要将它包含在反引号中。比较等于的运营商不是=而是==。你的代码的无误重写是:

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