Basic Werk | Memo | Contact


MEMOMEM

CommonLisp_study_01




;; 関数ブロック内でローカルな変数を使いたい。 ;; 変数同士が独立しているなら let [1]> (let ((a 1) (b 2)) (+ a b)) 3
;; 変数同士がお互いを参照し合うなら let* [2]> (let* ((a 1) (b (+ a 1))) (+ a b)) 3
;; 関数ブロック内でローカルな関数を使いたい。 ;; 関数同士が独立しているなら flet [3]> (flet ((f (n) (+ n 10)) (g (n) (+ n 5))) (f (g 6))) 21
;; 関数同士がお互いを参照しているなら labels [4]> (labels ((f (n) (+ n 10)) (g (n) (+ 5 (f n)))) (g 6)) 21
;; 再帰関数をブロック内で定義するときも labels [5]> (labels ((iota-iter (n) (if (<= n 0) '() (cons n (iota-iter (1- n)))))) ;; 自分自身を呼び出している(再帰) (reverse (iota-iter 10))) (1 2 3 4 5 6 7 8 9 10)


参考:

Land of Lisp


#CommonLisp #Lisp #let #let* #flet #labels #CLISP #iota



SN 2013/07/21 22:37:41

Archives > CommonLisp_study_01.html







MEMOMEM



More Contents

Basic Werk | Previous Blog

仕事と日 | 中村 心