Tanto no Emacs Lisp quanto no Common Lisp, o seguinte retornanil
(let (x y z)
x)
ainda assim, em todos os esquemas que tentei, ocorreu um erro.
O que foi dito acima foi aceitável sob qualquer padrão do Esquema?
Tanto no Emacs Lisp quanto no Common Lisp, o seguinte retornanil
(let (x y z)
x)
ainda assim, em todos os esquemas que tentei, ocorreu um erro.
O que foi dito acima foi aceitável sob qualquer padrão do Esquema?
Não, o código postado nunca foi legal no esquema padrão. Para todos os padrões do Scheme desde R1RS (1978)
let
teve a sintaxe:(let ((var1 form1) ...) expr1 expr2 ...)
. O artigo original do Scheme de Sussman e Steele (1975) nem sequer usavalet
.Observe que, por exemplo,
(let () 42)
é legal tanto no Scheme quanto no Common Lisp, ou seja, é legal ter umlet
formulário sem ligações.“Qualquer versão do Esquema de todos os tempos” é um conceito muito amplo e pode ser necessária alguma pesquisa para descartar toda a história. Mas nos esquemas modernos que conheço, isso não é permitido, e o padrão R5RS claramente não permite, especificando que as ligações para a
let
devem vir em pares nome/valor e não especificando o que significaria um nome sem valor.