什么是“现代”TypeCast看起来像什么?

时间:2013-10-29 15:28:20

标签: haskell

班级TypeCast的历史可以追溯到2004年,因此它已经相当老了。哈斯克尔(即使仍然相当辉煌)。我的问题是:如果今天在最先进的GHC中重新实施[最好是7.6,但是继续使用HEAD,如果能让事情变得更好],它会是什么样子?

如果我理解了一些最新的扩展,很可能正确答案是:它甚至不再需要,只需使用X.知道X的值会很好;)

1 个答案:

答案 0 :(得分:3)

我不熟悉TypeCast的所有用法,但在我最近所做的事情中,你可以用{~来替换它,它可以从{{TypeFamilies获得。 1}}扩展名。我第一次看到Oleg的东西here

 class  TypeEq x y b | x y -> b
 instance               TypeEq x x HTrue
 instance b ~ HFalse => TypeEq x y b

Oleg解释了这个伏都教如何比我更好地工作:

  

如果类型检查器可以看到两种类型t1和t2是相同的   可以选择第一个TypeEq实例,约束TypeEq t1   t2 b简化为b~HTrue。否则是TypeEq的第三个参数   与HFalse统一。单词otherwise' betrays the complementation,是默认情况',它是核心的   重叠的实例。我们看到了有用性的第一个暗示   重叠实例及其与类型等式的关系。

以下代码段中的"advanced overlap" wiki page也提到了这一点:

-- instance TypeCast flag HFalse => ShowPred a flag -- before -XTypeFamilies
instance (flag ~ HFalse) => ShowPred a flag