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