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

Haskell 数据构造函数中的多态回调,haskell,Haskell,我刚开始学哈斯克尔。我有定制课程 class MyClass a where doSomething :: a -> () 我可以在构造函数中使用多态回调编写数据吗 data MyData = MyConstructor { callback :: (MyClass m) => m -> () -- error } 我想对函数参数进行约束。简而言之,是的,您可以使用Rank2Types或RankNTypespragma 因为您的数据类型是存在量化的。实际上是 dat

我刚开始学哈斯克尔。我有定制课程

class MyClass a where
  doSomething :: a -> ()
我可以在构造函数中使用多态回调编写数据吗

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

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

简而言之,是的,您可以使用
Rank2Types
RankNTypes
pragma

因为您的数据类型是存在量化的。实际上是

data MyData = MyConstructor (forall m. MyClass m => m -> ())
您需要更高级别的扩展