Tampilkan postingan dengan label Cons. Tampilkan semua postingan
Tampilkan postingan dengan label Cons. Tampilkan semua postingan

Kamis, 01 November 2012

Latihan LISP

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))

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 ?
Related Posts Plugin for WordPress, Blogger...