[英]How to define that a generic type is “printable”
我必须预先打印一个多态树类型。 我遇到了一些麻烦,因为我的通用类型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)
谢谢!
你可以要求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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.