2012-10-20 28 views
3

我剛開始學習haskell。我有自定義類數據構造函數中的多態回調

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

我可以在構造函數中使用多態回調寫入數據嗎?

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

我想約束函數參數。

回答

3

總之,是的,你可以通過使用Rank2TypesRankNTypes編譯指示。

由於您的數據類型是存在量化的。它實際上是

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

你需要更高的等級擴展。

+0

謝謝!有用! – brainstream