LISP - Prädikate

Prädikate sind Funktionen, die ihre Argumente für bestimmte Bedingungen testen und null zurückgeben, wenn die Bedingung falsch ist, oder wenn ein Wert ungleich null ist, ist die Bedingung wahr.

Die folgende Tabelle zeigt einige der am häufigsten verwendeten Prädikate -

Sr.Nr. Prädikat & Beschreibung
1

atom

Es nimmt ein Argument und gibt t zurück, wenn das Argument ein Atom ist, oder nil, wenn nicht.

2

equal

Es dauert zwei Argumente und gibt zurück t wenn sie strukturell gleich sind oder nil Andernfalls.

3

eq

Es dauert zwei Argumente und gibt zurück t Wenn es sich um dieselben identischen Objekte handelt, teilen Sie sich denselben Speicherort oder nil Andernfalls.

4

eql

Es dauert zwei Argumente und gibt zurück t wenn die Argumente sind eqoder wenn es sich um Zahlen desselben Typs mit demselben Wert handelt oder wenn es sich um Zeichenobjekte handelt, die dasselbe Zeichen darstellen, oder nil Andernfalls.

5

evenp

Es nimmt ein numerisches Argument und kehrt zurück t wenn das Argument gerade Zahl ist oder nil wenn nicht anders.

6

oddp

Es nimmt ein numerisches Argument und kehrt zurück t wenn das Argument eine ungerade Zahl ist oder nil wenn nicht anders.

7

zerop

Es nimmt ein numerisches Argument und kehrt zurück t wenn das Argument Null ist oder nil wenn nicht anders.

8

null

Es braucht ein Argument und kehrt zurück t Wenn das Argument null ergibt, wird es zurückgegeben nil.

9

listp

Es braucht ein Argument und kehrt zurück t Wenn das Argument zu einer Liste ausgewertet wird, wird es zurückgegeben nil.

10

greaterp

Es nimmt ein oder mehrere Argumente und kehrt zurück t wenn entweder ein einzelnes Argument vorhanden ist oder die Argumente von links nach rechts sukzessive größer sind, oder nil wenn nicht anders.

11

lessp

Es nimmt ein oder mehrere Argumente und kehrt zurück t wenn entweder ein einzelnes Argument vorhanden ist oder die Argumente von links nach rechts sukzessive kleiner sind, oder nil wenn nicht anders.

12

numberp

Es braucht ein Argument und kehrt zurück t wenn das Argument eine Zahl ist oder nil wenn nicht anders.

13

symbolp

Es braucht ein Argument und kehrt zurück t Wenn das Argument ein Symbol ist, wird es zurückgegeben nil.

14

integerp

Es braucht ein Argument und kehrt zurück t Wenn das Argument eine Ganzzahl ist, wird es zurückgegeben nil.

15

rationalp

Es braucht ein Argument und kehrt zurück t Wenn das Argument eine rationale Zahl ist, entweder ein Verhältnis oder eine Zahl, wird es zurückgegeben nil.

16

floatp

Es braucht ein Argument und kehrt zurück t Wenn das Argument eine Gleitkommazahl ist, wird es zurückgegeben nil.

17

realp

Es braucht ein Argument und kehrt zurück t Wenn das Argument eine reelle Zahl ist, wird es zurückgegeben nil.

18

complexp

Es braucht ein Argument und kehrt zurück t Wenn das Argument eine komplexe Zahl ist, wird es zurückgegeben nil.

19

characterp

Es braucht ein Argument und kehrt zurück t Wenn das Argument ein Zeichen ist, wird es zurückgegeben nil.

20

stringp

Es braucht ein Argument und kehrt zurück t Wenn das Argument ein Zeichenfolgenobjekt ist, wird es zurückgegeben nil.

21

arrayp

Es braucht ein Argument und kehrt zurück t Wenn das Argument ein Array-Objekt ist, wird es zurückgegeben nil.

22

packagep

Es braucht ein Argument und kehrt zurück t Wenn das Argument ein Paket ist, wird es zurückgegeben nil.

Beispiel 1

Erstellen Sie eine neue Quellcodedatei mit dem Namen main.lisp und geben Sie den folgenden Code ein.

(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 ))

Wenn Sie den Code ausführen, wird das folgende Ergebnis zurückgegeben:

T
NIL
T
NIL
T
NIL
NIL
NIL
T

Beispiel 2

Erstellen Sie eine neue Quellcodedatei mit dem Namen main.lisp und geben Sie den folgenden Code ein.

(defun factorial (num)
   (cond ((zerop num) 1)
      (t ( * num (factorial (- num 1))))
   )
)
(setq n 6)
(format t "~% Factorial ~d is: ~d" n (factorial n))

Wenn Sie den Code ausführen, wird das folgende Ergebnis zurückgegeben:

Factorial 6 is: 720