А-нормальная форма


В информатике А -нормальная форма (сокращенно ANF ) — это промежуточное представление программ в функциональных компиляторах . В ANF все аргументы функции должны быть тривиальными (константы или переменные). То есть оценка каждого аргумента должна быть немедленно остановлена.

ANF ​​был представлен Sabry и Felleisen в 1992 году [1] как более простая альтернатива стилю передачи продолжения (CPS). Некоторые из преимуществ использования CPS в качестве промежуточного представления заключаются в том, что оптимизацию программ на CPS легче выполнять, чем на исходном языке, и что компиляторам также легче генерировать машинный код для программ на CPS. Фланаган и др. [2] показал, как компиляторы могут использовать ANF для достижения тех же преимуществ с помощью одного преобразования на уровне исходного кода; Напротив, для реалистичных компиляторов преобразование CPS обычно включает дополнительные этапы, например, для упрощения терминов CPS.

В этой статье рассматривается основное определение, выраженное в терминах λ-исчисления со слабой редукцией и let-выражениями , где ограничение накладывается

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