私は Haskell プログラミングにかなり慣れていないため、コードでこのエラーが発生する理由を理解するのに苦労しています。
私の問題は次のとおりです。任意の正の整数 i は、i = 2^n*k として表すことができます。ここで、k は奇数、つまり奇数の 2 乗です。n を i における 2 の指数と呼びます。たとえば、40 の 2 の指数は 3 (40 = 2^3*5 であるため) ですが、42 の 2 の指数は 1 です。i 自体が奇数の場合、n はゼロです。一方、i が偶数の場合、それは 2 で割り切れることを意味します。2 の指数を求める関数 exponentOfTwo を引数に記述します。
私は疑似コードを理解しており、かなり単純に思えます。結果が奇数になるまで i を 2 で再帰的に除算し、除算が発生する回数は n です。
これが私のコードです(31-32行目):
exponentOfTwo :: Int -> Int
exponentOfTwo i = if odd i then 0 else 1 + exponentOfTwo (i 'div' 2)
32 行目の 62 列目に「文字 'i' の文字列/文字リテラルの字句エラー」というエラーが表示されます。
どこでもこのエラーの解決策を探してみましたが、これまでのところ運がありません。