Lisp-predicates
LISP-述語
述語は、特定の条件について引数をテストし、条件がfalseの場合、またはnil以外の値が条件がtrueの場合にnilを返す関数です。
次の表は、最も一般的に使用される述語のいくつかを示しています-
Sr.No. | Predicate & Description |
---|---|
1 |
atom 1つの引数を取り、引数がアトムの場合はtを返し、そうでない場合はnilを返します。 |
2 |
equal 2つの引数を取り、それらが構造的に等しい場合は t を返し、そうでない場合は nil を返します。 |
3 |
eq 2つの引数を取り、同じメモリ位置を共有する同じオブジェクトである場合は t を返し、そうでない場合は nil を返します。 |
4 |
eql 2つの引数を取り、引数が eq であるか、同じ値の同じ型の数であるか、同じ文字を表す文字オブジェクトであるか、そうでない場合は nil の場合、 t を返します。 |
5 |
evenp 1つの数値引数を取り、引数が偶数の場合は t を返し、そうでない場合は nil を返します。 |
6 |
oddp 1つの数値引数を取り、引数が奇数の場合は t を返し、そうでない場合は nil を返します。 |
7 |
zerop 1つの数値引数を取り、引数がゼロの場合は t を返し、そうでない場合は nil を返します。 |
8 |
null 1つの引数を取り、引数の評価がnilの場合は t を返し、それ以外の場合は nil を返します。 |
9 |
listp 1つの引数を取り、引数がリストに評価される場合は t を返し、そうでない場合は nil を返します。 |
10 |
greaterp 1つ以上の引数を取り、単一の引数がある場合、または引数が左から右に連続して大きい場合は t を返し、そうでない場合は nil を返します。 |
11 |
lessp 1つ以上の引数を取り、単一の引数がある場合、または引数が左から右に連続して小さい場合は t を返し、そうでない場合は 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