2011-02-05 34 views
5

私はHaskellプログラミングにはかなり新しく、私のコードでこのエラーを受け取っている理由を理解できません。Haskell:文字 'i'の文字列/文字リテラルの字句エラー

私の問題は次のとおりです。任意の正の整数iは、i = 2^n * kと表すことができます。ここで、kは奇数です。つまり、奇数の2倍の累乗です。私は、iを2の指数と呼びます。例えば、40の2の指数は3である(40 = 2^3 * 5なので)。一方42の指数は1である.i自体が奇数の場合、nはゼロである。一方、iが偶数の場合、それは2で割ることができることを意味します。引数に2の指数を見つけるために関数exponentOfTwoを書いてください。

私は擬似コードを理解し、それはかなり単純なようだ:再帰的に私は結果が奇数になるまで、分裂が起こる回数がここでnは

である2で割ると、自分のコード(行31-32)である。

私は、エラーを受信して​​い
exponentOfTwo :: Int -> Int 
exponentOfTwo i = if odd i then 0 else 1 + exponentOfTwo (i 'div' 2) 

「文字列の字句エラー/文字のリテラル文字は 『I』、」行32列目の62

私はどこでも、これまで、このエラーの解決を探してみました私は運がなかった。

答えて

6

forixで関数を使用するには、一重引用符( ')ではなくバッククォート( `)で囲みます。後者は文字リテラルのためのものであり、文字は1文字だけです。

2

普通引用符ではなくdiv逆引用符で囲まれた文字はありますか?関数名を中置演算子として使用できるようにする必要があります。私はあなたの定義でそれを変更し、コードは私のために働いた。

+0

これは簡単な修正でしたが、今はまるでばかばかしいと感じます。私はそのようにしなければならないことを知らなかった。どうもありがとうございました! – Gus

関連する問題