LISP Encyclopedia : Fungsi Manipulasi List
Dalam AutoLISP, list adalah suatu jenis nilai yang memuat sekumpulan nilai menjadi satu. List dalam AutoLISP disimbolkan dengan kurung. Nilai dalam list ditutup oleh kurung buka dan kurung tutup dan objek-objek dipisah dengan spasi.
AutoLISP memberikan fitur Fungsi Manipulasi List (List Manipulation Function), yaitu fungsi-fungsi yang dapat memproses data-data yang ada dalam list dan menggunakannya sebagai alat untuk membuat kode yang kompleks.
Lalu bagaimana cara membuat sebuah list, dan bagaimana cara memanipulasi sebuah list? Berikut penjelasannya:
1. list
Fungsi list adalah fungsi yang dapat membuat sebuah list.
Sintaks fungsi ini adalah:
(list [expr ...])
expr - Nilai: Integer, Real, String, Entity Name, T, nil. Semua nilai yang bisa dimasukkan ke dalam list. Nilai dalam list disebut sebagai elemen.
Return - Nilai: List, nil. Nilai yang dikembalikan berupa list. Jika tidak ada nilai dalam list, dikembalikan nil.
Contoh penggunaan:
(list 1 (* 2 2) 3 "a" b "C")
(1 4 3 "a" b "C")
Beberapa orang selalu salah paham menyamakan fungsi quote dengan fungsi list. Padahal, mereka berbeda. Perbedaannya adalah:
- list mengambil nilai apa saja, termasuk sebuah fungsi, dan fungsi tersebut masih bisa berjalan dan memberikan nilai di dalam list.
- quote, sama seperti list, hanya saja fungsi yang ada dalam list tidak dapat berjalan dan ditampilkan secara harfiah.
2. nth
Fungsi nth adalah fungsi yang membaca elemen dalam list dengan menyertakan nomor urut elemen tersebut.
Sintaks fungsi ini adalah:
(nth n lst)
n - Nilai: Integer. Nomor urut data dalam list. List selalu mulai dari nomor urut nol.
lst - Nilai: List. Semua nilai yang bisa dimasukkan ke dalam list.
Return - Nilai: Integer, Real, String, List, Entity Name, T, nil. Semua nilai yang bisa dimasukkan ke dalam list.
Contoh penggunaan:
(setq a (list 1 (* 2 2) 3 "a" b "C"))
(nth 2 a)
3
3. append
append adalah fungsi yang menggabungkan dua atau lebih list menjadi satu.
Sintaks fungsi ini adalah:
(append [list ...])
list - Nilai: List. Kumpulan list.
Return - Nilai: List, nil. List-list yang sudah tergabung.
Contoh penggunaan:
(setq a (list 1 2 3))
(setq b (list 4 5 6))
(append a b)
(1 2 3 4 5 6)
4. last
last adalah fungsi yang mengembalikan elemen terakhir suatu list.
Sintaks fungsi ini adalah:
(last lst)
lst - Nilai: List. Sebual list dengan satu atau lebih elemen.
Return - Nilai: Integer, Real, String, List, Entity Name, T, nil. Elemen yang ada di akhiran list.
Contoh penggunaan:
(setq a (list 1 2 "b" "a"))
(last a)
"a"
5. length
length adalah fungsi yang menghitung berapa banyak elemen dalam suatu list.
Sintaks fungsi ini adalah:
(length lst)
lst - Nilai: List. Sebuah list dengan satu atau lebih elemen.
Return - Nilai: String. Angka mewakili banyak elemen dalam suatu list.
Contoh penggunaan:
(setq a (list 1 2 "b" "a"))
(length a)
4
6. reverse
reverse adalah fungsi yang membalikkan isi dari sebuah list.
Sintaks fungsi ini adalah:
(reverse lst)
lst - Nilai: List. List yang ingin dibalik.
Return - Nilai: List. List yang sudah dibalik.
Contoh penggunaan:
(setq a (list 1 2 "b" "a"))
(reverse a)
("a" "b" 2 1)
7. member
member adalah fungsi yang mencari sebuah elemen dalam list, dan menyisakan elemen tersebut dengan elemen setelahnya.
Sintaks fungsi ini adalah:
(subst expr lst)
expr - Nilai: Integer, Real, String, Entity Name, T, nil. Elemen yang sekiranya ada di dalam list.
lst - Nilai: List. List yang ingin dicari elemennya.
Return - Nilai: List, nil. List baru yang menyisakan elemen yang dicari dan elemen didepannya.
Contoh penggunaan:
(setq a (list 1 2 "b" "a"))
(member 2 a)
(2 "b" "a")
;Yang dicari adalah elemen '2', maka sisanya adalah (2 "b" "a")
(setq a (list 1 2 "b" "a"))
(member 4 a)
nil
;List tidak mempunyai elemen '4'
8. cons
cons adalah fungsi yang menambahkan elemen baru ke urutan pertama dalam list. Fungsi ini juga dapat membuat sebuah dotted list.
Sintaks fungsi ini adalah:
(cons new-first-element list-or-atom)
new-first-element - Nilai: Integer, Real, String, T, nil. Elemen yang akan ditambahkan di dalam list.
list-or-atom - Nilai: Integer, Real, String, T. Sebuah list atau sebuah atom. Atom adalah list yang mempunyai satu elemen.
Return - Nilai: List. List atau dotted list.
Contoh penggunaan:
(setq a (list 1 2 3 4))
(cons 0 a)
(0 1 2 3 4)
(cons 1 "a")
(1 . "a")
;Dotted list ditandai dengan list yang mempunyai dua elemen.
9. assoc
assoc adalah fungsi yang mencari elemen pertama sebuah list dalam sebuah kumpulan list. Kumpulan list (association list) adalah sebuah list yang memuat banyak dotted list. Fungsi ini biasanya digunakan untuk menangani kumpulan list yang berisi kode DXF (kode yang mewakili properti sebuah objek).
Sintaks fungsi ini adalah:
(assoc element alist)
element - Nilai: Integer, Real, String. Elemen yang mewakili sebuah list dalam kumpulan list. Elemen ini harus ada di urutan pertama sebuah list.
alist - Nilai: List, nil. List yang akan ditemukan dari elemen pertama.
Return - Nilai: List, nil. List yang sudah ditemukan dalam kumpulan list.
Contoh penggunaan:
(setq a (list (list 1 2 3) (list 4 5) (list 6 7 8 9)))
((1 2 3) (4 5) (6 7 8 9))
(assoc 1 a)
(1 2 3)
;Diberikan elemen '1', ditemukan list (1 2 3)
(assoc 5 a)
nil
; Elemen '5' ada di list (4 5), namun input tidak menerima elemen selain urutan pertama.
10 . car, cadr, caddr, cdr
Fungsi diatas mempunyai fungsi sebagai berikut:
- car = mengambil elemen pertama dalam sebuah list.
- cadr = mengambil elemen kedua dalam sebuah list.
- caddr = mengambil elemen ketiga dalam sebuah list.
- cdr = mengambil selain elemen pertama dalam sebuah list.
Sintaks fungsi-fungsi diatas adalah:
(car lst)
(cadr lst)
(caddr lst)
(cdr lst)
lst - Nilai: List.
Return - Nilai: Integer, Real, String, List, T, nil.
Contoh penggunaan:
(car (list 1 2 3 4)
1
(cadr (list 1 2 3 4)
2
(caddr (list 1 2 3 4)
3
(cdr (list 1 2 3 4)
(2 3 4)
11 . mapcar
mapcar adalah fungsi yang menjalankan sebuah komando kepada list.
Sintaks fungsi ini adalah:
(mapcar function list1 ... listn)
function - Nilai: Subroutine. Komando yang ingin dijalankan. Harus dimulai dengan tanda petik (').
list1 ... listn - Nilai: List. Daftar list yang ingin dijalankan sebuah komando.
Return - Nilai: List. List-list yang telah melalui komando .
Contoh penggunaan:
(setq
a 10
b 20
c 30
)
(mapcar '1+ (list a b c))
(11 21 31)
;Diberikan list (10 20 30), melalui fungsi '1+ (fungsi yang menambahkan 1 ke tiap anggota list)
(mapcar '+ (list 1 2 3) (list 4 5 6))
(5 7 9)
;Fungsi yang diberikan adalah +, maka kedua list yang ada akan ditambahkan tiap anggotannya
12. foreach
Fungsi foreach adalah fungsi yang menjalankan sebuah komando kepada tiap anggota dalam sebuah list. Sintaks komando ini bisa diibaratkan seperti ini: Untuk tiap x pada sebuah list, lakukan komando pada x.
Sintaks fungsi ini adalah:
(foreach name list [expr])
name - Nilai: Symbol. Variabel sementara yang menjadi wadah pengecekan.
list - Nilai: List. List yang akan dicek satu per satu anggotanya.
expr - Nilai: List. Komando yang ingin dijalankan kepada tiap anggota list.
Return - Nilai: List. List-list yang telah melalui komando .
Contoh penggunaan:
(setq
a 10
b 20
c 30
)
(foreach n (list a b c) (princ n))
10
20
30 30
;Tiap n pada list (10 20 30), tampilkan n.
13. apply
Fungsi apply adalah fungsi yang menjadikan semua elemen list sebuah input, dan menjalankan sebuah komando.
Sintaks fungsi ini adalah:
(apply 'function list)
'function - Nilai: Symbol. Komando yang akan dijalankan.
list - Nilai: List. List yang isinya akan digunakan.
Return - Nilai: Integer, Real, String, List, T, nil.
Contoh penggunaan:
(setq
a 10
b 20
c 30
)
(apply '+ (list a b c))
60
;Diberikan list (10 20 30), melalui fungsi '+, maka semua anggota ditambahkan, hasilnya 60
(mapcar 'strcat (list "a" "b" "c"))
"abc"
;Diberikan list ("a" "b" "c"), melalui fungsi 'strcat, maka semua anggota digabungkan, hasilnya "abc"
Begitulah penjelasan mengenai Fungsi Manipulasi List dari saya. Atas perhatiannya, saya ucapkan terima kasih.
Komentar
Posting Komentar