@kyanny's blog

My thoughts, my life. Views/opinions are my own.

let の書式の覚え方

(let ((a "A"))
  (print a))

いきなりこれをみると「なぜ (a "A") ではなく ((a "A")) なのか」が理解できず、混乱する。以下のように考えるとすっきり覚えられる。

;; 一番シンプルな形はこれ。 a は nil
(let (a)
  (print a))

;; a の初期値を与えるために (a "初期値") という書式が必要
(let ((a "A"))
  (print a))

;; 初期値なしならこう書ける。 a, b ともに nil
(let (a b)
  (print (list a b)))

;; 初期値ありだとそれぞれ (a "初期値") (b "初期値") と書く
(let ((a "A")
      (b "B"))
  (print (list a b)))

;; 初期値ありと初期値なしが混ざってもよい
(let ((a "A") b)
  (print (list a b)))