Lisp-predicates

提供:Dev Guides
移動先:案内検索

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