Estoy escribiendo un intérprete de Scheme, y yo estoy frente a una sentencia let válido, como:evaluación Lisp de dejar que las declaraciones
;; should print 7
(let ((a 4) (b 3))
(let ((a (* a a))
(b (* b b)))
(+ a b)
(- a b)))
Mi intérprete desarrolla tan sólo un subconjunto puramente funcional del esquema, por lo que no habrá efectos secundarios como set !. En un lenguaje puramente funcional, ¿por qué permitirías múltiples expresiones dentro de una instrucción let como la anterior?
Y al escribir mi intérprete, ¿hay alguna razón por la que debería evaluar algo más que la última expresión en el let? Parece que nunca podrían afectar el resultado de la última declaración evaluada.