letで局所変数を定義します。

iPhoneの裏側に家族のプリクラを貼っています。プリクラを見られるたびに「奥さん、かわいい」と言われるのですが、その妻にプリクラを貼ることを強制されているという事実に気づいて欲しいid:shunsukです。iPhoneにプリクラとか、ジョブズに怒られるよ。。。


今回は、局所変数を定義する方法を勉強します。大域変数は、defineでしたね。

(define x 2)
(define y 3)
(+ x y)
;=> 5


局所変数は、letで定義します。Let's define local variables!

(let ((x 2))
  (+ x 1))
;=> 3


上の例では、xに2が結びついています。括弧が2重になってる?あわてなすな(熊本弁で「あわてるな」)。xとyの2つを同時に定義してみます。

(let ((x 2) (y 3))
  (+ x y))
;=> 5


xとyは、letの括弧の中でしか使えません。ウソだと思ったら、試してご覧なさいよ。


letは入れ子にすることもできます。

(let ((x 2))
  (let ((y 3))
        (+ x y)))
;=> 5


そうすると、外側のletで定義したxを、内側のletで使うことができます。下の例では、yにxの値(つまり2ですね)を結びつけてます。

(let ((x 2))
  (let ((y x))
        (+ x y)))
;=> 4


let*というのもあって、これを使うと、直前に定義した変数を使うことができます。

(let* ((x 2) (y x))
  (+ x y))
;=> 4


上の例では、yを定義するときに、直前のxを使うことができるわけです。


ちなみに、id:shunsukは局所的に変なところがあります。iPhoneにプリクラを貼るとかね。