Что такое нормальная форма?

Я читал о различных промежуточных формах, но я не могу получить информацию об А-нормальных формах, кроме википодобных записей. Кто-нибудь здесь знает об этом или имеет хорошие ресурсы об этом?

2 ответа

Смотрите административную нормальную форму.

В информатике административная нормальная форма (сокращенно ANF) - это каноническая форма программ, которая была введена Фланаганом и др. В 1993 году для использования в качестве промежуточного представления в функциональных компиляторах, чтобы сделать последующие преобразования в машинный код более прямыми.

В ANF все аргументы функции должны быть тривиальными. То есть оценка каждого аргумента должна быть немедленно прекращена.

грамматика

Следующая грамматика BNF описывает чистое λ-исчисление, модифицированное для поддержки ограничений ANF:

EXP ::= VAL VAL
     |  let VAR = EXP in EXP
VAL ::= ? VAR . EXP
     |  VAR

Варианты ANF, используемые в компиляторах или в исследованиях, часто допускают также константы, записи, кортежи, многоаргументные функции, примитивные операции и условные выражения.

Фланаган, Кормак; Сабри, Амр; Дуба, Брюс Ф.; Феллайзен, Матиас. "Суть компиляции с продолжениями", вероятно, является окончательным источником.

Также нашел некоторые заметки о cs252r: Расширенное функциональное программирование.

По сути, лямбда-термин в административной нормальной форме может быть прочитан как процедура оценки самого себя, поскольку все аргументы приложений должны быть уже "оценены", и, следовательно, порядок, в котором должны оцениваться аргументы, обязательно должен быть явным.

В этой независимо интересной статье есть интересный обзор строгого промежуточного языка для составления ленивых функциональных языков. Раздел 3.1 и далее, и особенно рисунок 7, который дает небольшую пошаговую операционную семантику для строгого языка в административной нормальной форме.

Другие вопросы по тегам