- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
类(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
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.
complementation,
"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/
我是一名优秀的程序员,十分优秀!