У меня есть общее представление о том, что экзистенциальное квантификация на типах и где оно может быть использовано. Однако из моего опыта до сих пор существует много предостережений, которые необходимо понимать для эффективного использования концепции.
Вопрос: Есть ли хорошие ресурсы, объясняющие, как экзистенциальная квантификация реализуется в GHC? То есть.
- Как работает унификация по экзистенциальным типам - что унифицировано, а что нет?
- В каком порядке выполняются последующие операции над типами?
Моя цель - лучше понять сообщения об ошибках, которые GHC бросает мне. Сообщения обычно говорят что-то по линиям "this type using forall and this other type don't match"
, однако они не объясняют, почему это так.