2011-02-05 100 views
5

對於Haskell編程我相當新,而且我很難理解爲什麼我在代碼中收到此錯誤。Haskell:在字符'i'的字符串/字符文字中出現詞法錯誤

我的問題如下:任何正整數i都可以表示爲i = 2^n * k,其中k是奇數,也就是說,作爲奇數的2倍的冪。我在n中稱n爲2的指數。例如,40中2的指數是3(因爲40 = 2^3 * 5),而42中2的指數是1.如果i本身是奇數,那麼n是零。另一方面,如果我是偶數,那就意味着它可以被2除。編寫一個函數exponentOfTwo來發現它的參數2的指數。

我明白了僞代碼,它似乎相當簡單:由2分遞歸直到我的結果是奇數,時代的劃分發生數爲n

這裏是我的代碼(行31-32):

exponentOfTwo :: Int -> Int 
exponentOfTwo i = if odd i then 0 else 1 + exponentOfTwo (i 'div' 2) 

我收到錯誤「字符串詞法錯誤/字符的字符文字‘我’」上線32列62

我試過無處不在,至今尋找一個解決這個錯誤我沒有運氣。

回答

6

要在中綴中使用函數,用反引號(`)括起來,而不是用單引號(')。後者用於字符文字,它只有一個字符長。

2

div左右的字符是反引號而不是普通引號?他們需要允許一個函數名稱用作中綴運算符。我改變了你的定義,代碼爲我工作。

+0

哦哇,這是一個簡單的修復,我現在覺得有點愚蠢。我從來不知道必須這樣。非常感謝你! – Gus 2011-02-05 22:16:32