是否有可能實現一個類型類,如下所示:我可以在運行時區分類型實例嗎?
class SomeClass e where
isEq :: (SomeClass e') => e -> e' -> Bool
在當x
和y
都是這種類型的類的同一個實例isEq x y
將返回true?
上下文:這是獲取運行時類型測試的一個細微的嘗試。雖然起初我讀到Haskell已經進行了類型擦除,但我最近也讀到了GHC的擴展,那裏有一些運行時信息。
編輯:對於那些想知道我的用例的人...我一直在使用type-level編程來確保某些ADT的某些屬性,即涉及資源使用情況。這些資源由不同的類型表示(並且資源鎖相應地在類型級別實現)。
我正在嘗試編寫一個需要識別資源寫入/讀取的優化過程。但是由於我所有的資源都是由不同的單身人士代表的,他們唯一的共同因素(除了所有的價值都是底部)是將他們歸類在一起的類型類別。
簡而言之,我想在運行時的價值級別上使用我的類型級編程的結果。
您是否知道[Data.Typeable](http://hackage.haskell.org/packages/archive/base/latest/doc/html/Data-Typeable.html)?似乎有關... –
問題是誤導。你似乎想要的,並提供了答案,一種在運行時區分類型的方法。我對另一個問題感興趣:是否可以在運行時枚舉特定類型居住的類。 –
@ ThomasM.DuBuisson對類型類沒有定量(即haskell中沒有類型類變量),所以不太可能。 – permeakra