为了训练,我尝试创建与 Data.Tree 相同的数据结构:
data MyTree a = Tree a [MyTree a]
但是当我尝试为此数据结构创建显示实例时遇到了麻烦:
instance Show (MyTree a) where
show (Tree a [v]) = show a -- Only first element
我收到一个错误
No instance for (Show a)
arising from a use of `show'
这对我来说有些奇怪。正如我所看到的,功能显示能够与任何类型一起使用。
第二个问题:在标准库中使用了派生方法,但是有一些奇怪的定义:
instance Eq a => Eq (Tree a)
instance Read a => Read (Tree a)
instance Show a => Show (Tree a)
instance Data a => Data (Tree a)
这些是什么意思?