Berikut ini merupakan ilustrasi cara LISP bekerja. Pertama, LISP akan membaca dari kiri sampai ujung terkanan. Kecuali jika terdapat eror, maka LISP akan berhenti sebelum sampai ke kanan. Kedua, Lisp akan mengeksekusinya dari kanan menuju ke kiri. Mungkin daripada balik lagi ke kiri bikin cape saja..... mendingan sikat saja dari kanan. :)
>( cons ( first '( a s k ))( cons 'juga ( rest '( a s k ))))
>( cons ( first '( a s k ))( cons 'juga '( s k )))
>( cons ( first '( a s k ))'( juga s k ))
>( cons '( a )'( juga s k ))
>( a juga s k )
Analogi lain seperti :
(2+4)*(5+6*3) =(2+4)*(5+6*3)
=(2+4)*(5+18)
=(2+4)*(23)
=(6)*(23)
=138
Latihan LISP lanjutan posting kemarin.
Selain dengan fungsi FIRST dan REST, hasil yang sama juga bisa diperoleh dengan mengunakan fungsi CAR dan CDR. Entah kenapa saya diajarinya malah first & rest terlebih dahulu.
Baik, untuk latihan lisp kali ini, lakukan operasi CAR & CDR pada list - list berikut ini :
1. ( a b c )
2. ( x y z ( a b c ))
3. bakso
4. (( merah )(( putih )))
5. ( car ( car x ))
jika x = list nomor 4
Sekaligus latihan fungsi CONS, biar rame.
Buatlah formula untuk membentuk list - list berikut ini dengan fungsi CONS :
1. ( aku ( sayang kamu ))
2. ( aku ( sayang ) kamu )
3. (( aku sayang ) kamu )
4. (( aku sayang kamu ))
5. ( aku sayang kamu )
jika :
a. aku
b. sayang
c. kamu
d. ( ) / NIL
Contoh :
( cons a ( cons b ( cons c NIL ))) ........... <== bentuk formula yang diinginkan.
untuk :
( cons 'aku ( cons 'sayang ( cons 'kamu NIL))) ..... eksekusi pada interpreter
Seperti game asah otak bukan ? Mari berlatih bersama....! jika terdapat hal yang salah silahkan hubungi saya :)
Contoh lain :
( cons 'a( cons ( cons 'b ( cons 'c NIL )) NIL ))
Jika nilai - nilainya disubstitusi maka :
(cons 'aku(cons(cons 'sayang(cons 'kamu NIL))NIL))
Tampilkan postingan dengan label Cons. Tampilkan semua postingan
Tampilkan postingan dengan label Cons. Tampilkan semua postingan
Kamis, 01 November 2012
Rabu, 17 Oktober 2012
Fungsi FIRST dan REST
0. Mukodimah
Setelah oprek - oprek gambar dengan inkscape, mari kita lanjutkan pelajaran LISP. Belajar Lisp secara perlahan adalah gaya saya karena otak saya kurang encer :)
Banyak fungsi yang bisa digunakan untuk mengakses list. Tetapi fungsi yang akan kita pelajari saat ini adalah
* first
* rest
Sayang sekali fungsi ini mungkin tidak ada pada Autocad, setidaknya pada versi 2007. Jadi sebaiknya gunakan GNU Common LISP. Standarnya sih fungsi diatas ditulis dengan huruf kapital, hanya saja saya sedang malas....
Contoh hasil pada Autocad :
Command: ( first '( z x c ))
; error: no function definition: FIRST
Syntax : ( first <list>)
( rest <list>)
1. Percobaan
Buka Clisp-mu dan mainkan contoh berikut :
> ( first ( x y z ))
*** - EVAL : undefined function X
Hal tersebut karena Lisp tidak mengenali X, dan menginformasikan bahwa X belum didefinisikan. Bandingkan dengan contoh berikut :
> ( first ( quote ( x y z ))
> X
Inilah asal muasal tanda ( ' ) pada LISP. Karena umumnya kita malas untuk mengetik kata - kata panjang maka disingkat dengan tanda ( ' ). Ini dinamakan fungsi quote.
> ( first '( x y z ))
> X
> ( rest '( x y z ))
> ( Y Z )
Sudah mendapat gambaran ? Benar sekali, first akan menghasilkan elemen pertama dari sebuah list. Sedangkan rest membuang elemen pertama pada sebuah list.
2. Latihan
2.1 > ( first '( aku sayang kamu ))
> AKU
2.2 > ( rest '( aku sayang kamu ))
> ( SAYANG KAMU )
2.3 > ( rest ( rest '( aku sayang kamu )))
> ( KAMU )
2.4 > ( first (rest '( aku sayang kamu )))
> ( SAYANG )
2.5 > ( first ( rest ( rest '( aku sayang kamu ))))
> KAMU
3. Latihan lanjutan
Umpamanya kita mempunyai sebuah list yang berisikan aku sayang kamu. Kemudian kita berubah pikiran dan ingin menyisipkan juga setelah aku sehingga hasilnya adalah aku juga sayang kamu.
( aku sayang kamu ) menjadi ( aku juga sayang kamu )
Berikut contoh yang saya kerjakan :
( cons ( first '( aku sayang kamu ))( cons 'juga ( rest '( aku sayang kamu ))))
Lebih mirip sebuah permainan susun kata bukan ? :)
Yep, memang demikianlah adanya. Saya yakin anda bisa membuat formula yang labih efisien daripada contoh yang saya berikan. Itulah salah satu contoh permainan kata pada LISP dengan fungsi - fungsi sederhana.
4. CMIIW
Semua ini adalah catatan pelajaran saya, sangat besar kemungkinan salah. Karena itu mohon koreksi dari anda.
Jumat, 12 Oktober 2012
Fungsi cons pada LISP
0. Syntax
( cons '<ekspresi>
'<list> )
Cons pada lisp ini
berfungsi untuk menambahkan ekspresi pada list setelahnya. Ingat format
penulisannya harus ekspresi dulu kemudian diikuti list-nya.
1. Contoh
Buka Lisp mu dan
ketikan pada promt :
> ( cons 'saya '(
sangat lapar ))
> ( SAYA SANGAT
LAPAR)
>
> ( cons 'x '(y
z))
> ( X Y Z )
>
> ( cons 'hello
NIL)
> ( HELLO )
>
2. Latihan
a. ( cons 'alamat
(palsu))
b. ( cons alamat
'(palsu))
Apa hasil dari kedua
latihan tadi ?
Langganan:
Postingan (Atom)