Haskell:字符 'i' 处的字符串/字 rune 字中的词法错误

标签 haskell recursion lexical

我对 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 整除。编写一个函数 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' 处的字符串/字 rune 字中的词法错误”。

我已经尝试在任何地方寻找解决此错误的方法,但到目前为止我没有运气。

最佳答案

要在中缀 for 中使用函数,请用反引号 (`) 将其括起来,而不是用单引号 (')。后者用于字 rune 字,它们只有一个字符长。

关于Haskell:字符 'i' 处的字符串/字 rune 字中的词法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4910017/

相关文章:

draftjs - 我们可以在每个单词上存储元数据,让用户修改它并仍然保留它吗?

java - java中导入和方法调用的词法分析

java - 用户输入的字符串在输入时的词汇排名

haskell - 如何压缩不同长度的列表?

c# - SQL按照PK FK关系递归地从多个表中复制行

haskell - 声明具有未使用的类型函数参数的类型

algorithm - 很具体的树遍历方法

c# - C# 递归方法的意外结果

haskell - underscore.js 中的 chain 函数是否创建了一个 monad?

haskell - 如何确定 Haskell 函数的类型?