小编Gus*_*Gus的帖子

Haskell:可能的修复:将(Eq a)添加到上下文中

我是Haskell的新手,我很难理解我的代码在这里出了什么问题.

这是我应该做的:
考虑以下二叉树的定义

data BinaryTree a = Empty | Node a (BinaryTree a) (BinaryTree a)  
Run Code Online (Sandbox Code Playgroud)

考虑通过向左和向下交换形成二叉树的镜像的函数reflect

reflect :: BinaryTree a -> BinaryTree a  
reflect Empty = Empty  
reflect (Node x l r) = Node x (reflect r) (reflect l)  
Run Code Online (Sandbox Code Playgroud)

编写一个函数areMirrorImages,它确定两个二叉树t和u是否满足t = reflect u.该函数不应构建新树,因此不应调用reflect或Node; 虽然它可能在模式中使用Node.

这是我写的:

areMirrorImages :: BinaryTree a -> BinaryTree a -> Bool  
areMirrorImages Empty Empty = True  
areMirrorImages (Node _ _ _) Empty = False  
areMirrorImages Empty (Node _ _ _) = False  
areMirrorImages (Node x l r) …
Run Code Online (Sandbox Code Playgroud)

tree haskell compiler-errors typeclass

6
推荐指数
2
解决办法
2633
查看次数

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

我对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)  
Run Code Online (Sandbox Code Playgroud)

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

我试图在任何地方寻找解决这个错误的方法,到目前为止我没有运气.

recursion haskell lexical

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

haskell ×2

compiler-errors ×1

lexical ×1

recursion ×1

tree ×1

typeclass ×1