by shigemk2

当面は技術的なことしか書かない

Emacs let*

Emacs let*

letとlet*はちがうよって話。

(setq x 1)
;;; letは同時にバインドされるので外側のxを参照する
(let ((x (+ x 3))
      (y (+ x 2)))                      ; この時点でのxは1
  (+ x y))                              ; => 7
;;; let*は直前のローカル変数代入の影響を受ける
(let* ((x (+ x 3))
       (y (+ x 2)))                     ; この時点でのxは4
  (+ x y))                              ; => 10