【发布时间】:2012-10-03 15:44:45
【问题描述】:
假设我有一组记录,如
data A = A { a:: String } deriving (Show)
data B = B { b:: String } deriving (Show)
然后是一些类型类
class Foo a where
foo :: a -> IO ()
instance Foo A where
foo c = ...
我也想做类似的事情
bar = do
push (A {a="x"})
push (B {b="y"})
然后将这些东西放在一个列表中,以便稍后在某个地方运行,这样我就可以
map foo l
我是否应该编写模板 haskell 来生成包装器类型并派生实例以便列表可以是包装器类型?有没有更聪明的方法来解决这个问题?老实说,我对 haskell 类型系统感到非常困惑,并且知道必须有更好的方法来做到这一点。
【问题讨论】:
标签: generics haskell types functional-programming polymorphism