[英]Show function for polymorphic type
我正在尝试为多态Tree类型定义Show函数。 有人可以帮我吗?
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
您没有使用deriving Show
任何特殊原因吗? Show
和Read
类旨在提供真正的基本序列化/反序列化,(通常)生成有效的Haskell代码。
但是对于您想要的,我认为错误可以追溯到您的Mar
班。 按照定义,该实例的种类为* -> *
(例如Maybe
与Maybe Int
相对)。 您可能的意思是让instance Mar (Tree t) where ...
位于instance Mar (Tree t) where ...
data Tree t =
NilT |
Node t (Tree t) (Tree t)
deriving Show
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.