假设我有一组记录,如
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 类型系统感到非常困惑,并且知道必须有更好的方法来做到这一点。