我必须预先打印多态树类型。我遇到了一些麻烦,因为我的通用类型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)
谢谢!
答案 0 :(得分:4)
您可以在实例声明和以下类型声明中要求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