- Beranda
- Programmer Forum
Cantiknya Lisp (update terus)
...
![fathan.nugraha](https://s.kaskus.id/user/avatar/2011/06/03/default.png)
![Avatar border](https://s.kaskus.id/images/avatarborder/1.gif)
TS
fathan.nugraha
Cantiknya Lisp (update terus)
Pembukaan
Lisp, diambil dari singkatan LIST Processing adalah salah satu bahasa pemrograman yang usianya cukup tua (tahun 1958) namun masih dipakai sejumlah orang dan kelompok. Ciri khas bahasa Lisp adalah pemakaian kurung buka kurung tutup yang sangat banyak dan menggunakan prefix notation. Lisp termasuk interpreted language yang artinya mereka tidak perlu di compile dulu agar bisa berjalan, seperti python, ruby, javascript dan php.
Cara install Lisp
Ada banyak, banyak sekali dialek untuk Lisp. Dan setiap dialek mempunyai kelebihan dan kekurangan masing masing. Misalnya Arc, AutoLISP, Clojure, Common Lisp,Emacs Lisp, EuLisp, Franz Lisp. Tapi yang paling populer hanya segelintir, salah satunya Common Lisp. Jadi disini ane hanya menyediakan tutorial untuk menginstall CLISP.
Untuk Mac
Mac Agan harus punya homebrew dulu. Kalau belum punya harus diinstal dulu, ini commandnya
Nah kalau udah selesai baru instal Clisp-nya.
Setelah itu Agan udah punya interpreter Lisp.
Untuk Windows
1. Download dulu packagenya di http://sourceforge.net/projects/clisp/files/
2. Di unzip pakai winrar atau semacamnya di drive C:\
3. Jalankan command ini pakai command prompt
(pada waktu tutorial ini ditulis versi package yang terakhir adalah 2.49 jika Agan dapet yang lebih baru berarti command diatas harus mengikuti versinya agar commandnya jalan)
4. Buat file batch di C:\clisp.bat, isinya
5. Setelah disave, jalankan file batch itu untuk memulai CLISP.
(sumber : [url]http://www.cs.ubbcluj.ro/~gabis/plf/Lab/ResurseLab/CLisp/Using%20and%20Installing%20CLISP.htm[/url])
Untuk Linux
Untuk Ubuntu jalankan command dibawah ini
Untuk Centos jalankan command dibawah ini
Sudah diinstal gan? Oke, lanjut.
Prefix Notation
Notation adalah cara untuk mengekspresikan sebuah ekspresi. Waktu kita sekolah kita sering belajar matematika. Biasanya ibu guru memulai dari memberi contoh operasi yang paling sederhana misalnya 1 + 1. 1 + 1 itu memakai inflix notation karena operator (+) diletakan diantara operands (1 1). Dan bahasa pemrograman yang memakai inflix notation ini sangatlah banyak, tapi Lisp tidak termasuk. Dia memakai prefix notation, yaitu operator berada didepan lalu baru operands. Jadi jika buguru SD kita tadi adalah programer lisp dan terobsesi dengan lisp maka dia akan menunjukan contoh di papan tulis (+ 1 1). Untuk yang belum pernah nyoba prefix notation coba buka CLISP yang Agan instal tadi, lalu tulis (+ 1 1) akan ada kembalian hasil 2. Operator yang lain juga bisa dipakai kok, kayak -, *, /.
Terus kalau operandnya lebih dari 2 gimana gan? Misalnya nih di inflix notation
Kalau di prefix notation jadi
(bonus : selain inflix dan prefix ada juga postfix notation.)
List
List adalah kumpulan atom.
Cara membuat list :
atau
List diatas berisi angka 1, 2 dan 3. List juga bisa berisi list lain, misalnya:
Ada banyak cara untuk mengakses list yang sudah kita buat. Beberapa fungsi yang populer adalah car, cdr dan nth
Car adalah fungsi untuk mendapatkan element pertama.
(fungsi first sama dengan fungsi car)
Cdr adalah fungsi untuk mendapatkan element kedua sampai terakhir.
Nth adalah fungsi untuk mendapatkan element ke sekian.
Urutan pada fungsi nth adalah dimulai dari angka 0.
Dibawah ini ada beberapa fungsi dasar yang bekerja dengan list.
Length
Untuk mendapatkan panjang list.
Listp
Untuk mengecek apakah list atau bukan. T jika benar list, nil jika bukan.
Last
Untuk mendapatkan elemen terakhir dari sebuah list.
Push
Menambahkan item baru ke dalam list dan diletakan di depan.
Maksud kode diatas adalah membuat sebuah variable dengan nama list-saya dan valuenya list (3 5 7 9). lalu membuat list baru dengan anggota baru yaitu 10. Tapi jangan sampai terjebak mengira variabel list-saya menjadi (10 3 5 7 9) karena bahasa lisp adalah functional language maka list-saya tetap berisi (3 5 7 9). Coba deh
Tuh kan? Nah seandainya kita ingin mengedit list-saya agar berubah maka commandnya menjadi seperti ini
Coba dicek lagi
Ini baru bener.
Pop
(sumber: Common Lisp Quick Reference, ANSI Common Lisp, On Lisp, Wikipedia)
Sekian dulu gan...
Ada yang mau nambahin? Atau ada yang punya kendala waktu nginstal? Atau ada yang mau ditanyain? Tanyain aja disini gan, barangkali saya atau agan lainya bisa menjawab. Silahkan ngobrol tentang Lisp disini, jangan OOT ya![Malu (S) emoticon-Malu (S)](https://s.kaskus.id/images/smilies/malus.gif)
Kalau sempat ane update tiap hari gan.
Terimakasih untuk yang sudah baca.
![I Love Indonesia emoticon-I Love Indonesia](https://s.kaskus.id/images/smilies/smilies_fb5ly1xu2wka.gif)
Lisp, diambil dari singkatan LIST Processing adalah salah satu bahasa pemrograman yang usianya cukup tua (tahun 1958) namun masih dipakai sejumlah orang dan kelompok. Ciri khas bahasa Lisp adalah pemakaian kurung buka kurung tutup yang sangat banyak dan menggunakan prefix notation. Lisp termasuk interpreted language yang artinya mereka tidak perlu di compile dulu agar bisa berjalan, seperti python, ruby, javascript dan php.
Cara install Lisp
Ada banyak, banyak sekali dialek untuk Lisp. Dan setiap dialek mempunyai kelebihan dan kekurangan masing masing. Misalnya Arc, AutoLISP, Clojure, Common Lisp,Emacs Lisp, EuLisp, Franz Lisp. Tapi yang paling populer hanya segelintir, salah satunya Common Lisp. Jadi disini ane hanya menyediakan tutorial untuk menginstall CLISP.
Untuk Mac
Mac Agan harus punya homebrew dulu. Kalau belum punya harus diinstal dulu, ini commandnya
Code:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Nah kalau udah selesai baru instal Clisp-nya.
Code:
brew install clisp
Setelah itu Agan udah punya interpreter Lisp.
Spoiler for Screenshot:
Untuk Windows
1. Download dulu packagenya di http://sourceforge.net/projects/clisp/files/
2. Di unzip pakai winrar atau semacamnya di drive C:\
3. Jalankan command ini pakai command prompt
Code:
C:\clisp-2.49\install.bat
(pada waktu tutorial ini ditulis versi package yang terakhir adalah 2.49 jika Agan dapet yang lebih baru berarti command diatas harus mengikuti versinya agar commandnya jalan)
4. Buat file batch di C:\clisp.bat, isinya
Code:
cd c:\lisp\workingdir
c:\clisp-2.49\lisp -B "C:/clisp-2.49/" -M "C:\clisp-2.49\lispinit.mem"
5. Setelah disave, jalankan file batch itu untuk memulai CLISP.
(sumber : [url]http://www.cs.ubbcluj.ro/~gabis/plf/Lab/ResurseLab/CLisp/Using%20and%20Installing%20CLISP.htm[/url])
Untuk Linux
Untuk Ubuntu jalankan command dibawah ini
Code:
sudo apt-get install clisp
Untuk Centos jalankan command dibawah ini
Code:
yum install clisp
Sudah diinstal gan? Oke, lanjut.
Prefix Notation
Notation adalah cara untuk mengekspresikan sebuah ekspresi. Waktu kita sekolah kita sering belajar matematika. Biasanya ibu guru memulai dari memberi contoh operasi yang paling sederhana misalnya 1 + 1. 1 + 1 itu memakai inflix notation karena operator (+) diletakan diantara operands (1 1). Dan bahasa pemrograman yang memakai inflix notation ini sangatlah banyak, tapi Lisp tidak termasuk. Dia memakai prefix notation, yaitu operator berada didepan lalu baru operands. Jadi jika buguru SD kita tadi adalah programer lisp dan terobsesi dengan lisp maka dia akan menunjukan contoh di papan tulis (+ 1 1). Untuk yang belum pernah nyoba prefix notation coba buka CLISP yang Agan instal tadi, lalu tulis (+ 1 1) akan ada kembalian hasil 2. Operator yang lain juga bisa dipakai kok, kayak -, *, /.
Terus kalau operandnya lebih dari 2 gimana gan? Misalnya nih di inflix notation
Code:
> 2 * 10 + 5
25
Kalau di prefix notation jadi
Code:
> (+ (* 2 10) 5)
25
(bonus : selain inflix dan prefix ada juga postfix notation.)
List
List adalah kumpulan atom.
Cara membuat list :
Code:
> (list 1 2 3)
(1 2 3)
atau
Code:
> ‘(1 2 3)
(1 2 3)
List diatas berisi angka 1, 2 dan 3. List juga bisa berisi list lain, misalnya:
Code:
> (list 1 2 (list 3 4 5))
(1 2 (3 4 5))
Ada banyak cara untuk mengakses list yang sudah kita buat. Beberapa fungsi yang populer adalah car, cdr dan nth
Car adalah fungsi untuk mendapatkan element pertama.
Code:
> (car (list 3 4 5))
3
(fungsi first sama dengan fungsi car)
Cdr adalah fungsi untuk mendapatkan element kedua sampai terakhir.
Code:
> (cdr (list 3 4 5))
5
Nth adalah fungsi untuk mendapatkan element ke sekian.
Code:
> (nth 2 (list 3 4 5))
5
> (nth 0 (list 3 4 5))
3
Urutan pada fungsi nth adalah dimulai dari angka 0.
Dibawah ini ada beberapa fungsi dasar yang bekerja dengan list.
Length
Untuk mendapatkan panjang list.
Code:
> (length (list 3 4 5 6 7 10))
6
Listp
Untuk mengecek apakah list atau bukan. T jika benar list, nil jika bukan.
Code:
> (listp (list 1 2))
T
> (listp 300)
nil
Last
Untuk mendapatkan elemen terakhir dari sebuah list.
Code:
> (last (list 10 20 30 10 20 30))
30
Push
Menambahkan item baru ke dalam list dan diletakan di depan.
Code:
> (setf list-saya ‘(3 5 7 9))
(3 5 7 9)
> (push 10 list-saya)
(10 3 5 7 9)
Maksud kode diatas adalah membuat sebuah variable dengan nama list-saya dan valuenya list (3 5 7 9). lalu membuat list baru dengan anggota baru yaitu 10. Tapi jangan sampai terjebak mengira variabel list-saya menjadi (10 3 5 7 9) karena bahasa lisp adalah functional language maka list-saya tetap berisi (3 5 7 9). Coba deh
Code:
> list-saya
(3 5 7 9)
Tuh kan? Nah seandainya kita ingin mengedit list-saya agar berubah maka commandnya menjadi seperti ini
Code:
> (setf list-saya (push 10 list-saya))
(10 3 5 7 9)
Coba dicek lagi
Code:
> list-saya
(10 3 5 7 9)
Ini baru bener.
Pop
Code:
Mengeluarkan elemen pertama dari list.
> (setf list-saya ‘(3 5 7 9))
(3 5 7 9)
> (pop list-saya)
3
> list-saya
(5 7 9)
(sumber: Common Lisp Quick Reference, ANSI Common Lisp, On Lisp, Wikipedia)
Sekian dulu gan...
Ada yang mau nambahin? Atau ada yang punya kendala waktu nginstal? Atau ada yang mau ditanyain? Tanyain aja disini gan, barangkali saya atau agan lainya bisa menjawab. Silahkan ngobrol tentang Lisp disini, jangan OOT ya
![Malu (S) emoticon-Malu (S)](https://s.kaskus.id/images/smilies/malus.gif)
Kalau sempat ane update tiap hari gan.
Terimakasih untuk yang sudah baca.
![I Love Indonesia emoticon-I Love Indonesia](https://s.kaskus.id/images/smilies/smilies_fb5ly1xu2wka.gif)
![I Love Indonesia emoticon-I Love Indonesia](https://s.kaskus.id/images/smilies/smilies_fb5ly1xu2wka.gif)
![I Love Indonesia emoticon-I Love Indonesia](https://s.kaskus.id/images/smilies/smilies_fb5ly1xu2wka.gif)
0
2.1K
5
![Guest](https://s.kaskus.id/user/avatar/default.png)
![Avatar border](https://s.kaskus.id/images/avatarborder/1.gif)
Komentar yang asik ya
Mari bergabung, dapatkan informasi dan teman baru!
![Programmer Forum](https://s.kaskus.id/r200x200/ficon/image-176.png)
Programmer Forum![KASKUS Official KASKUS Official](https://s.kaskus.id/kaskus-next/next-assets/images/icon-official-badge.svg)
20.2KThread•4.4KAnggota
Urutkan
Terlama
![Guest](https://s.kaskus.id/user/avatar/default.png)
![Avatar border](https://s.kaskus.id/images/avatarborder/1.gif)
Komentar yang asik ya