【发布时间】:2014-01-31 20:11:25
【问题描述】:
考虑以下几点:
module Main where
data Tree a = EmptyTree | Node a (Tree a) (Tree a) deriving (Show, Read, Eq)
data Container a b = Container{contField :: b a} deriving (Show)
result = Container {contField = Node 'a' EmptyTree EmptyTree}
main = do
print result
如果我将它加载到 ghci 中,那么我会得到 result 类型的以下内容:
*Main> :t result
result :: Container Char Tree
如何在程序中打印Container Char Tree 类型?我试图调整Haskell — get TypeRep from concrete type instance 给出的解决方案,但我被卡住了,因为我找不到将typeOf 与* -> * 类型的构造函数结合使用的方法
[编辑]: 本文中的一些方法已在 ghc 7.8.1 Release notes for version 7.8.1 中被弃用:
Typeable 现在是 poly-kinded,使得 Typeable1、Typeable2 等, 已过时、不推荐使用并降级为 Data.OldTypeable。此外, 现在不允许使用用户编写的 Typeable 实例:使用派生或 新的扩展 -XAutoDeriveTypeable,它将创建 Typeable 模块中声明的每种数据类型的实例。
【问题讨论】: