前回
リスト遊び 3-1 関数定義 - by shigemk2
条件分岐にはcondという特殊関数を使う。condは、次のように本体に1つ以上のリストを
取る。
(cond (条件式1 式1a 式1b ....) (条件式2 式2a 式2b ....) (条件式3 式3a 式3b ....) ... )
条件式を先頭から順に評価していき、真となる条件式を
発見すると、その条件式に対応する残りの式群を評価し、終了する。
condが返す値は、式群のうち、最後に評価された式の値となる。
真になる条件式が見つからない場合は、nilを返す。
(defun Consp (x) (cond ((atom x) nil) (t t))) =>Consp (Consp 5) =>nil (Consp '(1 nil)) =>t ;; 新しく関数を定義してみるというか、condは必要ない。 (defun Consp (x) (null (atom x))) =>Consp (Consp 5) =>nil (Consp '('hoge nil)) =>t (defun Listp (x) (cond ((null x) t) ((consp x) t) (t nil))) =>Listp ;; アトムならnil (Listp 5) => nil ;; リストならt (Listp '('hoge nil)) =>t ;; ただのアトムならnil (Listp 'hoge) =>nil nil なら t (Listp nil) =>t
というかたちになる。