Drkcore

02 02 2008 Gauche Tweet

letとlet*の違い

分かったような分からんような状態だったが。

gosh> (let ((x 2) (y 3))
(let* ((x 7) (z (+ x y))) ;; z -> 10 (x 7)
(* z x)))
70

gosh> (let ((x 2) (y 3))
(let ((x 7) (z (+ x y))) ;; z -> 5 (x 2)
(* z x)))
35

let, let*, letrecを読んで理解した。

  • let
    • 変数1...変数nのスコープは,let式内部の式1...式mである.
  • let*
    • 変数iのスコープは,すぐあとの代入式(変数(i+1) 初期値(i+1))以降のlet*式の内部全てである.

ということは前者のほうも評価の順序を入れ替えてやれば、、、

gosh>  (let ((x 2) (y 3))
(let* ((z (+ x y)) (x 7)) ;; ここ変えた
(* z x)))
35

なるほど。

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021