Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Exception 定义新的参数化异常类型_Exception_Haskell - Fatal编程技术网

Exception 定义新的参数化异常类型

Exception 定义新的参数化异常类型,exception,haskell,Exception,Haskell,我需要抛出一个异常,它包含一些多态类型的东西a,供处理程序处理,比如 data MyException a = MyException a deriving (Typeable) 我最初有一个异常实例: instance Show (MyException a) where show _ = "MyException" instance Exception (MyException a) 但是,这是一个类型错误 No instance for (Typeable a) a

我需要抛出一个异常,它包含一些多态类型的东西
a
,供处理程序处理,比如

data MyException a = MyException a
    deriving (Typeable)
我最初有一个
异常
实例:

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
a
动态
?这似乎是错误的,因为我们已经在处理程序中执行了这种强制操作。这样做的惯用方法是什么


我使用的是GHC 7.8

我还没有测试过,但这样修改代码可能就足够了:

instance Typeable a => Exception (MyException a)
(事实上,你真正需要的是

instance Typeable (MyException a) => Exception (MyException a)

但是由于
派生
子句,您知道只要您有
可键入的a
),就有上下文中所需的实例

我还没有测试过,但这样修改代码可能就足够了:

instance Typeable a => Exception (MyException a)
(事实上,你真正需要的是

instance Typeable (MyException a) => Exception (MyException a)

但是由于
派生
子句,您知道只要您有
可键入a

异常的定义现在是
类(可键入e,显示e)=>异常e
MyException a
只是
Typeable
的一个实例,如果
a
是。因此,您需要编写
实例类型化a=>异常(MyException a)
。抱歉,这个问题太仓促了。真正的问题是我不想在
a
上设置
Typeable
约束。当然,如果我也使用
Dynamic
的话,我也需要它。嗯。
Exception
的定义现在是
class(可键入e,Show e)=>Exception e
MyException a
只是
Typeable
的一个实例,如果
a
是。因此,您需要编写
实例类型化a=>异常(MyException a)
。抱歉,这个问题太仓促了。真正的问题是我不想在
a
上设置
Typeable
约束。当然,如果我也使用
Dynamic
的话,我也需要它。六羟甲基三聚氰胺六甲醚。