Что именно представляют собой административные переопределения после преобразования CPS?

StackOverflow https://stackoverflow.com/questions/2122697

Вопрос

В контексте Схемы и CPS преобразование, у меня возникли небольшие проблемы с определением того, какой административный переопределения (лямбды) в точности являются:

  • ВСЕ лямбда-выражения, которые вводятся с помощью преобразования CPS
  • Только лямбда-выражения, которые вводятся с помощью преобразования CPS, но которые вы бы не написали, если бы выполняли преобразование "вручную" или с помощью более умного CPS-конвертера

Если возможно, хотелось бы получить хорошую ссылку.

Это было полезно?

Решение

Redex означает «сократимое выражение», то есть выражение, которое не является значением.Следовательно, лямбда — это не редекс, а вызов.
В CPS административный редекс — это редекс, оператором которого является лямбда-продолжение.Такие редексы можно сразу сократить, поскольку вы знаете, какую функцию вызываете.
Например, ((lambda (u) ...) foo) является административным редексом, но (k foo) нет.

Другие советы

Кажется, я нашел свой ответ.(Редактировать: Вместо этого я принял ответ dimvar, он короче и правильнее.)

Предполагая, что входная программа не является полностью CPS, по крайней мере, одна точка возврата процедуры должна быть преобразована в продолжение с помощью преобразования CPS.Таким образом, это продолжение вводится преобразованием и необходимо.Поскольку это необходимо, вам всегда нужно будет это делать, в том числе, например, при преобразовании вручную.Следовательно, административные переопределения - это только те лямбды, введенные преобразованием CPS, которые на самом деле не нужны (мое второе определение).

Я нашел бумага это объясняет это следующим образом (курсив мой):

Наивное λ-кодирование в CPS, однако, приводит к довольно впечатляющему раздуванию лямбд, большинство из которых формируют административные переопределения, которые могут быть безопасно сокращены.Административные сокращения дают термины CPS соответствующие тому, что можно было бы написать от руки.Поэтому стало сложной задачей устранить как можно больше административных переопределений в сроки преобразования CPS.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top