数据构造函数中的多态回调

时间:2012-10-20 18:08:53

标签: haskell

我刚开始学习哈斯克尔。我有自定义类

class MyClass a where
  doSomething :: a -> ()

我可以在构造函数中使用多态回调编写数据吗?

data MyData = MyConstructor {
  callback :: (MyClass m) => m -> () -- error
}

我想对函数参数进行约束。

1 个答案:

答案 0 :(得分:3)

简而言之,您可以使用Rank2TypesRankNTypes编译指示。

由于您的数据类型是存在量化的。实际上是

data MyData = MyConstructor (forall m. MyClass m => m -> ())

您需要更高的排名。