我需要抛出一个异常,其中包含一些多态类型的东西a
供处理程序处理,比如
data MyException a = MyException a
deriving (Typeable)
我最初有Exception
个实例:
instance Show (MyException a) where
show _ = "MyException"
instance Exception (MyException a)
但是这是
的类型错误No instance for (Typeable a)
arising from the superclasses of an instance declaration
In the instance declaration for
‘Exception (MyException a)’
我需要制作a
一个Dynamic
吗?这似乎是错的,因为我们已经在处理程序中做了那种强制性的东西。这样做的惯用方法是什么?
我正在进行GHC 7.8
答案 0 :(得分:5)
我还没有通过测试,但这可能足以以这种方式修改您的代码:
instance Typeable a => Exception (MyException a)
(事实上,你真正要求的是
instance Typeable (MyException a) => Exception (MyException a)
但是由于deriving
子句,只要有Typeable a
,就知道你在上下文中需要实例。)