Em [1], Mitchell Wand demonstrado que a adição de FEXPRs para o cálculo lambda puro trivializes a teoria de equivalência contextual, o que significa que dois termos são contextualmente equivalente sse eles são -congruent. Ao explorar o trabalho relacionado, ele foi "o nosso resultado estende uma velha observação de Albert Meyer [2] que e tornar equivalência contextual trivial". Mas, referindo-se a [2], o que pode ser encontrado é apenas a seguinte declaração de Meyer:eval
quote
A princípio, pensei que em linguagens com um recurso
quote
-eval
como LISP [3] não havia distinção de tipo entre objetos sintáticos e objetos executáveis. De fatoquote
-eval
parece suficientemente seguro no LISP porque, emboraquote
pareça sintaticamente um operador bona fi de, digamoscond
, ele realmente não se comporta como um (ele só tem comportamento no tempo de análise, não no tempo de execução, por exemplo, não se pode passarquote
como um parâmetro para um procedimento). Ainda assim, ainda não vi exemplos convincentes de onde o recursoquote
-eval
valeu a pena.
Independentemente de uma falha menor nesses comentários que possa induzir o leitor a inferir que isso cond
poderia ser passado como parâmetro para um procedimento. Se eu entendi direito, o que Meyer disse " quote
- eval
parece suficientemente seguro" significa que quote
- eval
pode não trivializar a teoria equacional, embora ele não tenha oferecido uma prova.
EDITAR:
Conforme sugerido por Martin, como todos os três documentos citados lidam com os idiomas da família LISP, vamos colocar a questão nessa mesma configuração. A equivalência contextual de uma língua com quote
- eval
, em particular o LISP, na Terra é trivial ou não?
[1] Mitchell Wand, a teoria de Fexprs é trivial . Lisp e Symbolic Computation 10 (3): 189-199 (1998).
[2] Albert Meyer, Puzzles no Workshop de Lógica de Programação sobre Desenvolvimento Formal de Software. 1984
[3] John McCarthy, Funções recursiva de expressões simbólicas e seu cálculo por Máquina, Parte I . Comunicações da ACM em abril de 1960.