LISP part 2
description
Transcript of LISP part 2
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 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
(B)
> (union '(a) '(b)) ;set union
(A B)
>(set-difference '(a b) '(a)) ;set difference
(B)