LISP part 2

Post on 19-Jan-2016

63 views 0 download

description

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 - PowerPoint PPT Presentation

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)