据我了解, Data.Constraint.Forall背后的想法是在实现中使用强制,但使用类型系统确保安全。关于后者,我有两个问题。
- 为什么我们需要两个 skolem 变量——A 和 B?我想如果一个“未知”类型满足一个约束,那么它就是多态的。第二种类型如何提供更多安全性?
- 为什么这些类型被称为 skolem 变量?我认为skolemnization是用来去除存在量化的,这里我们看到了全称量化。我错过了某个地方的标志翻转吗?
据我了解, Data.Constraint.Forall背后的想法是在实现中使用强制,但使用类型系统确保安全。关于后者,我有两个问题。