Anda di halaman 1dari 3

Functional Programming (LISP)

Modul : Struktur

1. Mengenal Functional Programming


Program yang strukturnya serba fungsi, artinya setiap persoalan diselesaikan dengan
menggunakan fungsi.
Mulai dikembangkan tahun 1960an, dimotivasi oleh peneliti bidang artificial
intelligence, symbolic computation, theorem proving, rule-based system, dan NLP.
Bahasa fungsional pertama adalah Lisp (McCarthy, 1960).
Memodelkan masalah komputasi sebagai suatu fungsi matematika, yang mempunyai
input (domain) dan hasil atau output (range)
2. Karakteristik dari functional programming murni (pure functional programming) :
Nilai dari suatu ekspresi hanya tergantung pada nilai-nilai dari sub-sub ekspresinya
(sangat rekursif)

Tidak ada efek samping di dalam ekspresi

Programming tanpa assignment

Implicit storage management

built-in operation on data storage allocation

automatic deallocation

garbage collection

Function are first class citizens

fungsi dapat merupakan nilai dari suatu ekspresi

fungsi dapat di-pass sebagai sebuah argument

fungsi dapat dipakai dalam struktur data

Menggunakan Interpreter bukan compiler

Untyped, berbeda dengan imperative programming yang strongly typed.

3. KERUGIAN
Terlalu banyak simbol ()
Lambat untuk perhitungan numerik
Tidak mempunyai tipe (type)
4. KEUNTUNGAN
Baik untuk symbolic processing (Artificial Intelligence)
Contoh Pemrograman Fungsional: LISP (List Programming)

5. KOMPONEN-KOMPONEN UTAMA SCHEMA


Schema : inti dari Lisp
Lisp menggunakan Prefix Notation.
Ekspresi dalam Lisp (Schema) secara umum ditulis :
> ( E1 E2 .....E3) => call by value
Quote digunakan untuk membuat ekspresi sebagai data/simbol.
Sintaks :
( quote <item>) atau <item>
Contoh:

(define pi 3.14159)

( quote pi)

(define f *)

(define f '*)

fungsi f, penggunaannya (f 2 3) 6
f sebagai simbol, beda dengan f di atas

Huruf besar dan kecil dianggap sama Contoh : pi= PI = Pi= pi


Operator yang digunakan dalam LISP

Operator Aritmatika (+, -, *, / , mod, expt)


Operator Rasional (=, /=, <, >, <=, >=)
Operator Boolean (true, false)

6. LATIHAN
Ubahlah notasi infix berikut kedalam notasi prefix (LISP).
(1 + 2) > (8 - 3)
Penyelesaian
( > (+1 2) (- 8 3) )
7. TUGAS
Ubahlah notasi infix berikut kedalam notasi prefix (LISP).
a.

2 * (3 + 1) - 2

b.

1 * 2 + 10 60 / 5

c. ((2 + 2) < 3) and (~(8 > 9) or (2 <= 6))

Anda mungkin juga menyukai