繁体   English   中英

显示多态类型的功能

[英]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任何特殊原因吗? ShowRead类旨在提供真正的基本序列化/反序列化,(通常)生成有效的Haskell代码。

但是对于您想要的,我认为错误可以追溯到您的Mar班。 按照定义,该实例的种类为* -> * (例如MaybeMaybe 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM