是否可以按如下方式实现类型类:
class SomeClass e where
isEq :: (SomeClass e') => e -> e' -> Bool
当和都是这个类型类的同一个实例时,哪里isEq x y
会返回true ?x
y
上下文:这是进行运行时类型测试的隐蔽尝试。起初我读到 Haskell 具有类型擦除功能,但我也读到了最近对 GHC 的扩展,其中包含一些运行时信息。
编辑:对于那些想知道我的用例的人......我一直在使用类型级编程来确保我的一些 ADT 的某些属性,即涉及资源使用。这些资源由不同的类型表示(资源锁相应地在类型级别实现)。
我正在尝试编写一个需要识别资源写入/读取的优化过程。但是由于我的所有资源都由不同的单例表示,其唯一的共同因素(除了所有值都是底部)是将它们组合在一起的类型类。
简而言之,我想在运行时值级别使用我的类型级别编程的结果。