【发布时间】:2012-09-25 13:00:19
【问题描述】:
Data.Constraint.Forall 背后的想法,据我了解,是在实现中使用强制转换,但使用类型系统确保安全。关于后者,我有两个问题。
- 为什么我们需要两个 skolem 变量 - A 和 B?我想如果一个“未知”类型满足一个约束,那么它就是多态的。第二种如何提供更高的安全性?
- 为什么这些类型被称为 skolem 变量?我认为skolemnization是用来去除存在量化的,这里我们看到了全称量化。是否有我错过的标志翻转?
【问题讨论】:
标签: haskell polymorphism logic