LISP part 2 By : asisten KBP ‘09
LIST List dipakai baik untuk program maupun untuk data. List : urutan dari 0 (nol) atau beberapa harga. Element dari list dapat terdiri dari boolean, angka, simbol, list, function. List kosong : () atau null Untuk membuat list menggunakan perintah Setf atau Setq.
Contoh (it seems that) => list 3 elemen ((it seems that) you (like) me) => list 4 elemen (a) => list 1 elemen (a ()) => list 2 elemen
Operasi – operasi pada list (null? X) (car X) => mengambil elemen pertama (cdr X) => mengambil sub- himpunan dengan membuang elemen pertama (cons a x)
Contoh (setf x ‘((it seems that) you (like) me)) (car x) => (it seems that) (car (car x)) = (caar x) => it (cdr (car x)) = (cdar x) => (seems that) (cdr x) => (you (like) me) (car (cdr x)) = (cadr x) => you (cdr (cdr x)) = (cddr x) => ((like) me)
Conses Conses sangat mudah dipakai: > (cons (cons 4 5) 6) > (cons 4 5) ;mengalokasikan sebuah cons. Set car menjadi 4 dan cdr menjadi 5. (4 . 5) > (cons (cons 4 5) 6) ((4 . 5) . 6) > (car (cons 4 5)) 4 > (cdr (cons 4 5)) 5
Function > (defun foo (x y) (+ x y 5)) ;membuat fungsi FOO > (foo 5 0) ;memanggil function 10 ;output
Fungsi rekursi : > (defun fact (x) (if (> x 0) (* x (fact (- x 1))) 1 ) FACT ;output > (fact 5) 120 ;output
Perulangan >(setq a 4) 4 >(loop (setq a (+ a 1)) (when (> a 7) (return a) ) 8
Sorting LISP menyediakan dua dasar untuk sorting: sort and stable-sort. >(sort '(2 1 5 4 6) #'<) (1 2 4 5 6) >(sort '(2 1 5 4 6) #'>) (6 5 4 2 1)
Beberapa Fungsi List lainnya > (append '(1 2 3) '(4 5 6)) ;menggabung list (1 2 3 4 5 6) > (reverse '(1 2 3)) ;membalik elemen dalam list (3 2 1) > (member ‘d '(b d a c)) ;membuat membership– mengembalikan nilai dari awal sampai akhir (D A C)
> (intersection '(a b c) '(b)) ;set intersection > (union '(a) '(b)) ;set union (A B) >(set-difference '(a b) '(a)) ;set difference