Подтвердить что ты не робот

Что означает источник GHC от "zonk"?

Я работаю над плагином для GHC, поэтому я читаю документацию для некоторой ее реализации.

Глагол "to zonk" повсюду, но я не могу отследить объяснение того, что значит "zonk" что-то или (в широком смысле), когда захотите. Я могу найти много заметок о сложных обстоятельствах, при которых необходимо zonk или не пытаться что-то делать, но без подсказки относительно того, что представляет собой большая картина, у меня возникают большие проблемы.

4b9b3361

Ответ 1

Un-zonked type может иметь переменные типа, которые являются изменяемыми ссылками, заполненными во время унификации (и эта изменчивость в значительной степени используется средством проверки типов для повышения производительности). Zonking пересекает тип и заменяет все изменяемые ссылки типом, к которому они относятся; таким образом, результирующая структура является неизменной и не требует разыменования для интерпретации.

Обратите внимание, что эти переменные типа являются мета-переменными, т.е. они не соответствуют переменным типа, введенным полиморфизмом; скорее, они являются переменными объединения, которые должны быть заменены реальными типами. Выбор замены определяется методом проверки типа/типа, а затем фактическая замена выполняется во время zonking.

Это понятие зонирования естественным образом распространяется на другие промежуточные представления typechecker, которые содержат типы.