Anda di halaman 1dari 15

LISP - Fungsional Programming

Pherwanto@stmik-im.ac.id
Pemograman Fungsional
• Pemrograman Fungsional adalah sebuah
pemrograman yang melakukan proses
komputasi sebagai evaluasi fungsi-fungsi
matematika.
• Pemrograman Fungsional sering disebut juga
pemrograman yang aplikatif karena fungsi-
fungsinya yang di aplikasikan kedalam
argumentasi menjadi deklaratif dan non-
prosedural.
TIGA KOMPONEN PRIMER BAHASA
FUNGSIONAL
1. Objek Data
Menggunakan mekanisme struktur data tingkat tinggi.
Contohnya : Array atau List.
2. Fungsi Built-in
Untuk memanipulasi objek data dasar yang menyediakan
sejumlah fungsi untuk membuat serta mengakses list.
3. Functional Forms
Untuk membuat fungsi baru yang mengizinkan
programmer mendefinisikan sebuah operasi baru dari
kombinasi fungsi yang ada
KELEBIHAN PEMROGRAMAN FUNGSIONAL

• Singkat - Program fungsional cenderung lebih


ringkas dibanding program terstruktur (2
sampai 10 kali).
• Mudah dimengerti - Program fungsional
seringkali lebih mudah untuk dimengerti..
• Tidak ada tumpukan pada memori - Tidak ada
kemungkinan memperlakukan integer sebagai
pointer, atau dilanjutkan dengan pointer null.
KELEBIHAN PEMROGRAMAN FUNGSIONAL
• Kode dapat digunakan kembali - Bahasa pemrograman fungsional
menggunakan polymorphism, yang akan meningkatkan
penggunaan kembali kode.
• Pelekatan yang kuat - Bahasa fungsional non-strict memliki fitur
kuat lainnya: hanya mengevaluasi program seperti yang diperlukan
untuk menghasilkan jawaban, yang sering disebut dengan lazy
evaluation. Struktur data dievaluasi secukupnya untuk
menghasilkan jawaban, dan sebagian mungkin tidak dievaluasi
sama sekali. Hal ini memungkinkan “pelekatan” untuk menyusun
bersama program yang sudah ada. Hal ini memungkinkan
penggunaan kembali program, atau potongan program lebih sering
dari yang dapat dilakukan oleh pengaturan terstruktur.
KELEBIHAN PEMROGRAMAN FUNGSIONAL

• Abstraksi yang kuat - Secara umum bahasa


fungsional menawarkan cara-cara baru yang kuat
untuk meng-enkapsulasi abstraksi.
• Manajemen memori yang terintegrasi - Kebanyakan
program rumit perlu mengalokasikan memori
dinamis dari tumpukan (heap). Setiap bahasa
fungsional memudahkan pemrogram dari beban
manajemen penyimpanan tersebut. Penyimpanan
dialokasikan dan diinisialisaikan secara implisit, dan
diselamatkan secara otomatis oleh kolektor sampah.
KELEMAHAN FUNGSIONAL PROGRAMMING

• Kode programnya cenderung agak lambat


berkembang
• Bahasa pemrogramannya cenderung sulit
untuk didebug
LISP - Programming
• LISP -> High Language Programming
• Invented by John McCarthy in 1958 while he
was at the Massachusetts Institute of
Technology (MIT)
Features of Common LISP
• It is machine-independent
• It uses iterative design methodology, and easy extensibility.
• It allows updating the programs dynamically.
• It provides high level debugging.
• It provides advanced object-oriented programming.
• It provides convenient macro system.
• It provides wide-ranging data types like, objects, structures, lists,
vectors, adjustable arrays, hash-tables, and symbols.
• It is expression-based.
• It provides an object-oriented condition system.
• It provides complete I/O library.
• It provides extensive control structures.
Large successful applications built in Lisp

• Emacs
• G2
• AutoCad
• Igor Engraver
• Yahoo Store
CLISP
• You can get the latest CLISP for Windows from
http://sourceforge.net/projects/clisp/files/late
st/download
A Simple Program
Let us write an s-expression to find the sum of three numbers 7, 9 and 11. To
do this, we can type at the interpreter prompt.
(+ 7 9 11)
LISP returns the result:
27

If you would like to run the same program as a compiled code, then create a
LISP source code file named myprog.lisp and type the following code in it.
(write (+ 7 9 11))

When you click the Execute button, or type Ctrl+E, LISP executes it
immediately and the result returned is:
27
Membuat Program
• Via editor misal vi untuk linux atau notepad
• buat program via edior
• Simpan dengan extention *.lisp atau *.lsp
• Untuk compile masuk ke command prompt
• Clisp *.lsp
Hello word
1. (write-line "Hello World")
(write-line "I am at 'Tutorials Point'! Learning LISP")

2. (write(+ (* (/ 9 5) 60) 32)) -> (60 * 9 / 5) + 32

Anda mungkin juga menyukai