【问题标题】:Show function for polymorphic type显示多态类型的函数
【发布时间】:2011-11-20 16:31:26
【问题描述】:

我正在尝试为多态树类型定义 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

【问题讨论】:

    标签: haskell types tree polymorphism


    【解决方案1】:

    您没有使用deriving Show 有什么特别的原因吗? ShowRead 类旨在提供真正基本的序列化/反序列化(通常)生成有效的 Haskell 代码。

    但是对于你想要的,我认为错误会回到你的 Mar 类。根据定义,该实例适用于类型* -> *(例如Maybe,而不是Maybe Int)。您可能的意思是拥有instance Mar (Tree t) where ...

    【讨论】:

    • 感谢您的拍摄,但它仍然给我同样的错误(你提到的那个)=/
    【解决方案2】:
    data Tree t =
        NilT |
        Node t (Tree t) (Tree t)
        deriving Show
    

    【讨论】:

    • 我试过了,它仍然给我一个错误信息。为了清楚起见,我想覆盖 show 函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多