gpt4 book ai didi

haskell - "modern"TypeCast 会是什么样子?

转载 作者:行者123 更新时间:2023-12-03 07:05:25 25 4
gpt4 key购买 nike

类(class)TypeCast可以追溯到 2004 年,因此 Haskell 相当“古老”(尽管仍然相当出色)。我的问题是:如果今天在最先进的 GHC 中重新实现 [最好是 7.6,但是继续,使用 HEAD 如果这会让事情变得更好],它会是什么样子?

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

最佳答案

我并不熟悉 TypeCast 的所有用法,但在我最近所做的事情中,您可以将其替换为类型相等断言 (~)您可以从 TypeFamilies 扩展中获取。我第一次在Oleg的东西中看到这个here :

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

奥列格解释了这个巫术如何比我更好地发挥作用:

If the type checker can see that two types t1 and t2 are the same so that the first TypeEq instance can be chosen, the constraint TypeEq t1 t2 b simplifies to b ~ HTrue. Otherwise the third argument of TypeEq is unified with HFalse. The word otherwise' betrays the
complementation,
the default case', which is at the core of overlapping instances. We see the first intimations of the usefulness of overlapping instances and of their relation with type equalities.

"advanced overlap" wiki page 上也提到了这一点在下面的代码片段中:

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

关于haskell - "modern"TypeCast 会是什么样子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19662523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com