LISP-述語
述語は、特定の条件について引数をテストし、条件がfalseの場合はnilを返す関数、または条件がtrueの場合はnil以外の値を返す関数です。
次の表は、最も一般的に使用される述語のいくつかを示しています-
シニア番号 | 述語と説明 |
---|---|
1 | atom 1つの引数を取り、引数がアトムの場合はtを返し、そうでない場合はnilを返します。 |
2 | equal 2つの引数を取り、戻ります t それらが構造的に等しい場合または nil そうでなければ。 |
3 | eq 2つの引数を取り、戻ります t それらが同じ同一のオブジェクトである場合、同じメモリ位置を共有するか、 nil そうでなければ。 |
4 | eql 2つの引数を取り、戻ります t 引数が eq、またはそれらが同じ値を持つ同じタイプの数値である場合、またはそれらが同じ文字を表す文字オブジェクトである場合、または nil そうでなければ。 |
5 | evenp 1つの数値引数を取り、 t 引数が偶数の場合または nil そうでなければ。 |
6 | oddp 1つの数値引数を取り、 t 引数が奇数の場合または nil そうでなければ。 |
7 | zerop 1つの数値引数を取り、 t 引数がゼロの場合または nil そうでなければ。 |
8 | null 1つの引数を取り、 t 引数がnilと評価された場合、それ以外の場合は nil。 |
9 | listp 1つの引数を取り、 t 引数がリストに評価される場合、それ以外の場合は戻ります nil。 |
10 | greaterp 1つ以上の引数を取り、 t 引数が1つあるか、引数が左から右に連続して大きくなる場合、または nil そうでなければ。 |
11 | lessp 1つ以上の引数を取り、 t 引数が1つしかない場合、または引数が左から右に向かって連続的に小さくなる場合、または nil そうでなければ。 |
12 | numberp 1つの引数を取り、 t 引数が数値の場合または nil そうでなければ。 |
13 | symbolp 1つの引数を取り、 t 引数がシンボルの場合、それ以外の場合は戻ります nil。 |
14 | integerp 1つの引数を取り、 t 引数が整数の場合は整数、それ以外の場合は nil。 |
15 | rationalp 1つの引数を取り、 t 引数が有理数(比率または数値)の場合、それ以外の場合は nil。 |
16 | floatp 1つの引数を取り、 t 引数が浮動小数点数の場合、それ以外の場合は nil。 |
17 | realp 1つの引数を取り、 t 引数が実数の場合、それ以外の場合は nil。 |
18 | complexp 1つの引数を取り、 t 引数が複素数の場合、それ以外の場合は nil. |
19 | characterp 1つの引数を取り、 t 引数が文字の場合、それ以外の場合は nil。 |
20 | stringp 1つの引数を取り、 t 引数が文字列オブジェクトの場合、それ以外の場合は nil。 |
21 | arrayp 1つの引数を取り、 t 引数が配列オブジェクトの場合、それ以外の場合は nil。 |
22 | packagep 1つの引数を取り、 t 引数がパッケージの場合、それ以外の場合は nil. |
例1
main.lispという名前の新しいソースコードファイルを作成し、その中に次のコードを入力します。
(write (atom 'abcd))
(terpri)
(write (equal 'a 'b))
(terpri)
(write (evenp 10))
(terpri)
(write (evenp 7 ))
(terpri)
(write (oddp 7 ))
(terpri)
(write (zerop 0.0000000001))
(terpri)
(write (eq 3 3.0 ))
(terpri)
(write (equal 3 3.0 ))
(terpri)
(write (null nil ))
コードを実行すると、次の結果が返されます-
T
NIL
T
NIL
T
NIL
NIL
NIL
T
例2
main.lispという名前の新しいソースコードファイルを作成し、その中に次のコードを入力します。
(defun factorial (num)
(cond ((zerop num) 1)
(t ( * num (factorial (- num 1))))
)
)
(setq n 6)
(format t "~% Factorial ~d is: ~d" n (factorial n))
コードを実行すると、次の結果が返されます-
Factorial 6 is: 720