私は Scheme インタプリタを書いていますが、次のような有効な let ステートメントに直面しています:
;; should print 7
(let ((a 4) (b 3))
(let ((a (* a a))
(b (* b b)))
(+ a b)
(- a b)))
私のインタープリターは、Scheme の純粋に機能的なサブセットのみを実装しているため、set! などの副作用はありません。純粋に関数型の言語で、上記のように let ステートメント内で複数の式を許可するのはなぜですか?
インタプリタを書く際に、let の最後の式以外を評価する必要がある理由はありますか? 評価された最後のステートメントの結果に影響を与えることはできなかったようです。