Я пишу интерпретатор Scheme, и я столкнулся с действительным утверждением, пусть такие, как:Лисп оценки позволяют заявления
;; should print 7
(let ((a 4) (b 3))
(let ((a (* a a))
(b (* b b)))
(+ a b)
(- a b)))
Мой переводчик не реализует только чисто функциональное подмножество схемы, так что будет не побочные эффекты, такие как set !. В чисто функциональном языке, почему вы допускаете несколько выражений внутри оператора let, например, выше?
И в письменной форме мой переводчик, есть ли какая-то причина, по которой я должен оценивать что-либо, кроме последнего выражения в let? Похоже, что они никогда не повлияют на результат оценки последнего утверждения.