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.

Tidak ada komentar:

Posting Komentar

Related Posts Plugin for WordPress, Blogger...