Идея Data.Constraint.Forall, как я понимаю, заключается в использовании принуждения в реализации, но обеспечить безопасность с использованием типа система. У меня есть два вопроса относительно последнего.
- Зачем нам нужны две переменные skolem - A и B? Я бы предположил, что если ограничение выполняется "неизвестным" типом, то оно является полиморфным. Как второй тип дает больше безопасности?
- Почему эти типы называются сколемированными переменными? Я думал, что сколеминизация используется для устранения экзистенциальной квантификации, и здесь мы видим универсальную количественную оценку. Есть ли что-нибудь, что я пропустил?