2017-04-22 65 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]]