2011-09-20 19 views
0

我正在尝试为多态树类型定义显示函数。任何人都可以帮我吗?多态类型的显示函数

import Char 

data Tree t = 
    NilT | 
    Node t (Tree t) (Tree t) 

class Mar t where 
    maior :: t -> String 

instance Mar Tree where 
    maior (NilT) = "a" 
    maior (Node t a b) = "b" 

instance Show Tree where 
    show = maior 

非常感谢!


溶液(ivanm给出):

import Char 

data Tree t = 
    NilT | 
    Node t (Tree t) (Tree t) 

class Mar t where 
    maior :: t -> String 

instance Mar (Tree t) where 
    maior (NilT) = "a" 
    maior (Node t a b) = "b" 

instance Show (Tree t) where 
    show = maior 

回答

4

是否有您不使用deriving Show什么特别的原因? ShowRead类旨在提供真正基本的序列化/反序列化(通常)生成有效的Haskell代码。

但是,对于你想要的,我认为错误是回到你的Mar类。如所定义的,该实例针对种类* -> *(例如Maybe而不是Maybe Int)。你可能意思是有instance Mar (Tree t) where ...

+0

感谢拍摄,但它仍然给我同样的错误(你提到的那个)=/ – Filipe

+0

我的坏,它工作!非常感谢!!! – Filipe

1
data Tree t = 
    NilT | 
    Node t (Tree t) (Tree t) 
    deriving Show 
+0

我试过了,它仍然给我一个错误信息。为了说清楚,我想重写show函数。 – Filipe