我刚开始学习哈斯克尔。我有自定义类
class MyClass a where
doSomething :: a -> ()
我可以在构造函数中使用多态回调编写数据吗?
data MyData = MyConstructor {
callback :: (MyClass m) => m -> () -- error
}
我想对函数参数进行约束。
答案 0 :(得分:3)
简而言之,您可以使用Rank2Types
或RankNTypes
编译指示。
由于您的数据类型是存在量化的。实际上是
data MyData = MyConstructor (forall m. MyClass m => m -> ())
您需要更高的排名。