Beberapa Fungsi Dalam CLISP

LISP, singkatan dari List Processor, merupakan salah satu bahasa pemrograman tertua. LISP diciptakan oleh J.McCarthy pada tahun 1959. Pada saat itu LISP mempunyai banyak dialek, tapi sekarang sudah distandarkan sehingga bisa dipakai secara umum.

Ada banyak program untuk menjalankan LISP, tergantung sistem operasinya. Yang saya gunakan adalah GNU CLISP. Bisa didapatkan dari web ini -> http://www.clisp.org/ . Karena LISP termasuk bahasa fungsional, pemrogramannya menggunakan fungsi-fungsi. Berikut ini beberapa fungsi dalam CLISP yang saya ketahui….

Operator Matematika

Yang paling mendasar tentu saja adalah operator-operator matematika, seperti +, -, /, *, >, 2 1) maka hasilnya adalah T, maksud dari T adalah benar karena 2 lebih besar dari 1. Akan tetapi, bila kita menuliskan ( setq dipakai untuk mengeset nilai suatu variabel/elemen. Dalam hal ini, a bernilai 2. Dengan demikian, bila kita menulis (= a 2) hasilnya T karena a yang sekarang ini bukanlah sebagai huruf melainkan suatu variabel dan berisikan 2.

Untuk membandingkan suatu elemen yang berupa huruf, dapat digunakan perintah eq. Contohnya:
(eq ‘a ‘b) hasilnya NIL karena huruf a tidak sama dengan huruf b.

Sedikit catatan, a dengan ‘a berbeda makna. ‘a menunjukan bahwa a adalah huruf. Akan tetapi, a hanyalah sebuah variabel yang belum diketahui isinya dan harus kita set dahulu isinya bila ingin dipakai.

ATOM dipakai untuk mencari tahu apakah inputan hanyalah 1 elemen saja.

Contoh:
(atom 3) hasilnya T.
(atom ‘a) hasilnya T.
(atom ‘(1 2 3)) hasilnya NIL.
(atom ‘()) hasilnya T.

LISTP dipakai untuk mencari tahu apakah inputan adalah suatu list.

Contoh:
(listp 1) hasilnya NIL.
(listp ‘(1 2)) hasilnya T.

NUMBERP dipakai untuk mencari tahu apakah inputan adalah angka. Sebaliknya SYMBOLP dipakai untuk char/huruf.

Contoh:
(numberp 1) hasilnya T.
(symbolp ‘a) hasilnya T.

ODDP dipakai untuk mencari tahu apakah inputan adalah angka ganjil. Sebaliknya EVENP dipakai untuk angka genap.

Contoh:
(oddp 1) hasilnya T.
(evenp 2) hasilnya T.

INTEGERP dipakai untuk mencari tahu apakah inputan adalah bilangan bulat. Sebaliknya FLOATP dipakai untuk bilangan desimal.

ContohL
(integerp 1) hasilnya T.
(floatp 2.0) hasilnya T.

NULL bila dipakai dalam list akan mencari tahu apakah list tersebut kosong. Akan tetapi dapat dipakai sebagai negasi juga.

Contoh:
(null ‘()) hasilnya T.
(null ‘(1 2)) hasilnya NIL.
(null T) hasilnya NIL.
(null NIL) hasilnya T.

NOT dipakai sebagai negasi.

Contoh:
(eq ‘a ‘a) hasilnya T. Bila ditulis (not (eq ‘a ‘a)) maka hasilnya NIL.

MAX dipakai untuk mencari elemen tertinggi dalam inputan. MAX tidak dapat dipakai untuk list ataupun char. Dan MIN dipakai untuk mencari elemen terendah dalam inputan.

Contoh:
(max 1 2 3) hasilnya 3.
(min -1 0 1) hasilnya -1.
(max ‘a ‘b) atau (max ‘(1 2)) dan juga (min ‘(1 2)) atau (min ‘a ‘b) akan menghasilkan pesan error.

EVAL dipakai untuk mengevaluasi pernyataan.

Contoh:
Bila kita menulis ‘(+ 3 2) maka hasilnya bukanlah 5 melainkan (+ 3 2) karena adanya tanda ‘ membuat CLISP mengira (+ 3 2) adalah sebuah list. Karena itu kita dapat menuliskan (eval ‘(+ 3 2)) dan hasilnya adalah 5. EVAL akan error bila menginputkan list tanpa operator seperti (eval ‘(a 1 2)).

CAR dipakai untuk mengambil elemen pertama dari list. Dan CDR dipakai untuk mengambil list tanpa CAR.

Contoh:
(car ‘(1 2 3)) hasilnya 1.
(cdr ‘(1 2 3)) hasilnya (2 3).
(car (cdr ‘(1 2 3))) hasilnya 2.

Selain CAR, kita dapat menggunakan beberapa perintah lain. Seperti FIRST untuk mencari elemen pertama, SECOND untuk mencari elemen kedua, THIRD untuk mencari elemen ketiga, LAST untuk mencari elemen terakhir dan seterusnya (sesuai dengan bahasa inggrisnya). Sementara itu, CDR dapat digantikan dengan REST. Akan tetapi bila yang dicari memang tidak ada, hasilnya NIL.
Contoh:
(second ‘(1 2 3)) hasilnya 2.
(last ‘(1 2 3)) hasilnya 3.
(fourth ‘(1 2 3)) hasilnya NIL.

CAR dan CDR juga dapat dipersingkat. Contohnya:
(cadr ‘(1 2 3 4)) hasilnya 2. Didapat dari (car (cdr ‘(1 2 3 4)).
(caddr ‘(1 2 3 4)) hasilnya 3. Didapat dari (car (cdr (cdr (‘1 2 3 4)))).
(cddr ‘(1 2 3 4) hasilnya (3 4). Didapat dari (cdr (cdr ‘(1 2 3 4))).

CONS dipakai untuk menambahkan suatu elemen ke dalam list.

Contoh:
(cons ‘a ‘(b c d)) hasilnya (A B C D).

EQUAL dipakai untuk mengecek apakah 2 buah list sama atau tidak. EQUAL berbeda dengan EQ. EQ dipakai bila input berupa atom, sedangkan EQUAL untuk input berupa list.

Contoh:
(equal ‘(1 2 3) ‘(1 2 3)) hasilnya T.
(equal ‘(1 2 3) ‘(1 2 4)) hasilnya NIL.

INTERSECTION dipakai untuk mencari irisan dari 2 buah list.

Contoh:
(intersection ‘(2 a c) ‘(1 a b c)) hasilnya (A C).

APPEND dipakai untuk menggabungkan 2 atau lebih list.

Contoh:
(append ‘(1 2 3) ‘(a b c) ‘(3 4 5)) hasilnya (1 2 3 A B C 3 4 5).

SORT dipakai untuk mengurutkan elemen dari suatu list numerik saja.

Contoh:
(sort ‘(2 1 2 4) #’) hasilnya (4 2 2 1).

SET-DIFFERENCE dipakai untuk mencari perbedaan dari 2 buah list. Fungsi ini akan mengambil hasil yang berbeda dari list pertama setelah dicocokkan dengan list kedua.

Contoh:
(set-difference ‘(2 a b 3) ‘(1 a b 4)) hasilnya (2 3).
(set-difference ‘(2 a b 3) ‘(1 a c 4)) hasilnya (2 B 3).
(set-difference ‘() ‘(1 a c 4)) hasilnya NIL.
(set-difference ‘(2) ‘()) hasilnya (2).

Demikian penjelasan saya, semoga dapat bermanfaat.

sumber amaziabernikeatmadja.blogspot.com

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s