如何定义泛型类型是“可打印的”

时间:2011-09-20 01:57:21

标签: generics haskell printing show

我必须预先打印多态树类型。我遇到了一些麻烦,因为我的通用类型t可能不是“可打印的”。有谁知道怎么卖这个?反正有没有告诉haskell只接受“可打印”类型? (在控制台上打印,所以它应该像“显示”)

以下是代码:

import Char

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

instance Show (Tree t) where
    show = func

func :: (Tree t) -> String
func (NilT) = "" 
func (Node t a b) = t ++ (func a) ++ (func b)

谢谢!

1 个答案:

答案 0 :(得分:4)

您可以在实例声明和以下类型声明中要求tShow的实例:

instance Show t => Show (Tree t)
func :: Show t => Tree t -> String

要使用此功能,您的预订遍历需要拨打show

func (Node t a b) = show t ++ func a ++ func b