Generics 如何定义泛型类型为;“可打印”;

Generics 如何定义泛型类型为;“可打印”;,generics,haskell,printing,show,Generics,Haskell,Printing,Show,我必须在预订单上打印多态树类型。我遇到了一些麻烦,因为我的泛型类型t可能无法“打印”。有人知道怎么卖这个吗?是否有必要告诉haskell只接受“可打印”类型?(在控制台上打印,所以应该是“Show”之类的内容) 代码如下: import Char data Tree t = NilT | Node t (Tree t) (Tree t) instance Show (Tree t) where show = func func :: (Tree t) -> S

我必须在预订单上打印多态树类型。我遇到了一些麻烦,因为我的泛型类型t可能无法“打印”。有人知道怎么卖这个吗?是否有必要告诉haskell只接受“可打印”类型?(在控制台上打印,所以应该是“Show”之类的内容)

代码如下:

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)

谢谢

您可以在实例声明和以下类型声明中要求
t
成为
Show
的实例:

instance Show t => Show (Tree t)
func :: Show t => Tree t -> String
要使用它,您的预顺序遍历将需要调用
show

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

您可以在实例声明和以下类型声明中要求
t
成为
Show
的实例:

instance Show t => Show (Tree t)
func :: Show t => Tree t -> String
要使用它,您的预顺序遍历将需要调用
show

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