Haskell:字符'i'中字符串/字符文字的词汇错误

时间:2011-02-05 22:08:35

标签: haskell recursion lexical

我对Haskell编程很新,我无法理解为什么我在代码中收到此错误。

我的问题如下:任何正整数i可以表示为i = 2 ^ n * k,其中k是奇数,即,作为奇数的2倍的幂。我们在i中将n的指数称为n。例如,40的2的指数是3(因为40 = 2 ^ 3 * 5),而42的2的指数是1.如果i本身是奇数,则n是零。另一方面,如果我是偶数,那意味着它可以除以2.写一个函数exponentOfTwo,用于在其参数中找到2的指数。

我理解伪代码并且看起来相当简单:递归地将i除以2,直到结果为奇数,除法发生的次数为n

这是我的代码(第31-32行):

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

我在第32行第62行收到错误“字符'i'的字符串/字符文字中的词汇错误。

我已经尝试到处寻找这个错误的解决方案,到目前为止我没有运气。

2 个答案:

答案 0 :(得分:6)

要在中缀中使用函数,请使用反引号(`)将其包围,而不是使用单引号(')。后者用于字符文字,其中只有一个字符长。

答案 1 :(得分:2)

div周围的字符是否反引号而非正常引号?它们需要允许函数名称用作中缀运算符。我在你的定义中改变了它,代码对我有效。