В [1] Митчелл Ванд продемонстрировал, что добавление fexprs к чистому лямбда-исчислению упрощает теорию контекстуальной эквивалентности, означая, что два термина контекстуально эквивалентны, если они -конгруэнтны. При изучении соответствующей работы, он пошел «наш результат расширяет старое наблюдение Альберт Мейер [2] , что и визуализации контекстная эквивалентности тривиальным». Но, ссылаясь на [2], можно найти только следующее утверждение Мейера:evalquote
Я первая подумала , что в языках с
quote-evalфункциями , такими как LISP [3] не было никакого типа различия между синтаксическими и исполняемыми объектами. На самом делеquote-evalкажется достаточно безопасным в LISP, потому что, хотяquoteсинтаксически выглядит как добросовестный оператор, как, скажемcond, он действительно не ведет себя как один (он работает только во время разбора, а не во время выполнения, например, никто не может пройтиquoteв качестве параметра к процедуре). Тем не менее, я до сих пор увидеть убедительные примеры , гдеquote-evalфункция была стоящей.
Независимо от одного незначительного недостатка в этих комментариях, который может ввести читателя в заблуждение, сделать вывод, что condможно передать в качестве параметра в процедуру. Если я правильно понимаю, то, что Мейер сказал « quote- evalкажется достаточно безопасным», означает, что quote- evalможет не тривиализировать эквациональную теорию, хотя он и не представил доказательств.
РЕДАКТИРОВАТЬ:
По предложению Мартина, поскольку все три упомянутые статьи касаются языков семейства LISP, давайте поставим вопрос под эту же настройку. Является ли контекстуальная эквивалентность языка с quote- evalв частности LISP, на земле тривиальной или нет?
[1] Митчелл Жезл, Теория Fexprs тривиальна . Лисп и Символьные вычисления 10 (3): 189-199 (1998).
[2] Альберт Мейер, семинар « Пазлы в программировании и логике» по разработке формального программного обеспечения. 1984
[3] Джон Маккарти, Рекурсивные функции символических выражений и их вычисление с помощью машины, часть I . Связь АСМ в апреле 1960 года.