大家好,这是我的代码,在该代码上出现“多个镜像声明”的怪异错误。在此之前,我还有其他功能,但是都没有命名为mirror ...有什么想法吗?

mirror :: BinTree a -> BinTree a
mirror = undefined
mirror (Node tL x tR) = Node x mirror tR mirror tL

最佳答案

函数的多个定义必须在等号后留下相同数量的参数。从理论上讲,这不是必需的(请注意:其中一个定义可以肯定是lambda或返回另一个函数),但是人们似乎喜欢它,因为这样的定义通常表示一个错误。

具体来说,您有一个带零参数的定义:

mirror = undefined


还有一个带有一个参数的定义:

mirror (Node tL x tR) = Node x mirror tR mirror tL


您可能想要:

mirror _              = undefined
mirror (Node tL x tR) = Node x mirror tR mirror tL

关于haskell - Haskell:“<函数名称>”的多个声明…?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18563575/

10-13 03:07