LISP - Predikat

Predikat adalah fungsi yang menguji argumennya untuk beberapa kondisi tertentu dan mengembalikan nihil jika kondisinya salah, atau beberapa nilai bukan nil adalah kondisi benar.

Tabel berikut menunjukkan beberapa predikat yang paling umum digunakan -

Sr.No. Predikat & Deskripsi
1

atom

Dibutuhkan satu argumen dan mengembalikan t jika argumennya adalah atom atau nil jika sebaliknya.

2

equal

Dibutuhkan dua argumen dan hasil t jika mereka secara struktural sama atau nil jika tidak.

3

eq

Dibutuhkan dua argumen dan hasil t jika mereka adalah objek identik yang sama, berbagi lokasi memori yang sama atau nil jika tidak.

4

eql

Dibutuhkan dua argumen dan hasil t jika argumennya eq, atau jika mereka adalah bilangan dari tipe yang sama dengan nilai yang sama, atau jika mereka adalah objek karakter yang mewakili karakter yang sama, atau nil jika tidak.

5

evenp

Dibutuhkan satu argumen numerik dan kembali t jika argumennya bilangan genap atau nil jika sebaliknya.

6

oddp

Dibutuhkan satu argumen numerik dan kembali t jika argumennya adalah angka ganjil atau nil jika sebaliknya.

7

zerop

Dibutuhkan satu argumen numerik dan kembali t jika argumennya nol atau nil jika sebaliknya.

8

null

Dibutuhkan satu argumen dan kembali t jika argumen bernilai nol, jika tidak maka akan dikembalikan nil.

9

listp

Dibutuhkan satu argumen dan kembali t jika argumen dievaluasi ke daftar jika tidak maka akan dikembalikan nil.

10

greaterp

Dibutuhkan satu atau lebih argumen dan hasil t jika ada argumen tunggal atau argumen tersebut berturut-turut lebih besar dari kiri ke kanan, atau nil jika sebaliknya.

11

lessp

Dibutuhkan satu atau lebih argumen dan hasil t jika ada satu argumen atau argumen secara berturut-turut lebih kecil dari kiri ke kanan, atau nil jika sebaliknya.

12

numberp

Dibutuhkan satu argumen dan kembali t jika argumennya adalah angka atau nil jika sebaliknya.

13

symbolp

Dibutuhkan satu argumen dan kembali t jika argumen adalah simbol jika tidak maka akan dikembalikan nil.

14

integerp

Dibutuhkan satu argumen dan kembali t jika argumennya adalah integer jika tidak maka akan dikembalikan nil.

15

rationalp

Dibutuhkan satu argumen dan kembali t jika argumennya adalah bilangan rasional, baik rasio atau bilangan, jika tidak maka akan dikembalikan nil.

16

floatp

Dibutuhkan satu argumen dan kembali t jika argumennya adalah angka floating point jika tidak maka akan dikembalikan nil.

17

realp

Dibutuhkan satu argumen dan kembali t jika argumennya adalah bilangan real jika tidak maka akan dikembalikan nil.

18

complexp

Dibutuhkan satu argumen dan kembali t jika argumen adalah bilangan kompleks jika tidak maka akan dikembalikan nil.

19

characterp

Dibutuhkan satu argumen dan kembali t jika argumennya adalah karakter jika tidak maka akan dikembalikan nil.

20

stringp

Dibutuhkan satu argumen dan kembali t jika argumennya adalah objek string jika tidak maka akan dikembalikan nil.

21

arrayp

Dibutuhkan satu argumen dan kembali t jika argumennya adalah objek array, jika tidak maka akan dikembalikan nil.

22

packagep

Dibutuhkan satu argumen dan kembali t jika argumennya adalah sebuah paket jika tidak maka akan dikembalikan nil.

Contoh 1

Buat file kode sumber baru bernama main.lisp dan ketikkan kode berikut di dalamnya.

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

Saat Anda menjalankan kode, ia mengembalikan hasil berikut -

T
NIL
T
NIL
T
NIL
NIL
NIL
T

Contoh 2

Buat file kode sumber baru bernama main.lisp dan ketikkan kode berikut di dalamnya.

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

Saat Anda menjalankan kode, ia mengembalikan hasil berikut -

Factorial 6 is: 720