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