3

我刚开始学习haskell。我有自定义课程

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

我可以在构造函数中编写带有多态回调的数据吗?

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

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

4

1 回答 1

3

简而言之,是的,您可以使用Rank2Typesor RankNTypespragma。

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

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

您需要更高级别的扩展。

于 2012-10-20T18:14:30.493 回答