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