【发布时间】:2014-04-25 18:48:33
【问题描述】:
如果这个问题已经被问到,我深表歉意。 Show 是一个非常常见的关键字,让我很难消除噪音。如果我为functor composition 定义了一个类型,如下所示,我不知道如何为该类型定义Show 实例:
newtype FComp f g a = C { unC :: f (g a) }
--- Incomplete Show definition for FComp
instance Show (FComp f g a) where
show (C x) = "FComp" ++ show ??? --- Given a type say FComp Maybe Maybe Int, should print out "FComp Maybe Maybe Int"
还有:
$ :t show
show :: Show a => a -> String
所以,看来 show 需要一个值,并返回相应的字符串。将x 插入show ??? 将不起作用,因为仍需要为f (g a) 类型定义Show 实例。
【问题讨论】:
-
newtype FComp f g a = C { unC :: f (g a) } deriving Show;如果您有兴趣,请使用 GHC 的-ddump-deriv标志查看它生成的代码。 -
不应该显示值,而不是类型吗?
标签: haskell composition functor typeclass