Functional
Programming
Functional
programming adalah Program serba fungsi, yang artinya setiap persoalan
diselesaikan dengan menggunakan fungsi.
Functional
programming sendiri 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).
LISP
Interpretation
Notasi lambda
digunakan untuk menentukan fungsi dan definisi fungsi.
Ekspresi
disusun dalam notasi Cambridge-prefix.
Contoh:
(+ 3 2) maka akan menghasilkan nilai 5
Operasi
aritmatika:
(+)à0
(+
5)à5
(+ 5
4 3 2 1)à15 // maksud nya 5+4+3+2+1 = 15
(*)à1
(*5)à5
(* 1
2 3 4 5)à120 // maksud nya 1*2*3*4*5 = 120
Contoh
lain: (+ (* 5 4) (− 6 2) //maka akan
menghasilkan (5 * 4) + (6 − 2) = 24
Variabel global
Didefinisikan
dengan menggunakan fungsi define.
Contoh:
(define f 120)
Evaluasi ekspresi
fà120
(+ f
5)à 125
(f)àerror, karena memiliki kurung tapi tidak
melakukan sebuah operasi
5 à5
#fàfalse
#tàtrue
Special Form Function : DEFINE
(define warna
(quote (merah kuning hijau)))
(define warna
’(merah kuning hijau))
(define x f) 120
(define x ’f) x berisi simbol f
(define warna ’
merah)
(define warna merah) error, karena merah bukanlah suatu
variable yang memiliki suatu isi
Evaluasi proses
dari DEFINE berbeda, parameter pertama tidak akan di evaluasi. Paramete kedua
akan di evaluasi, dan terikat pada parameter pertama.
Output
Tools
Biasa nya tidak
dibutuhkan, karena interpreter selalu menampilkan hasil dari fungsi yang di
evaluasi pada top level (tidak nested).
Explicit input
dan output bukan bagian dari fungsional programming model murni, karena input
operasi merubah kondisi program dan output operasi adalah side effects.
PLT Scheme memiliki dua tools utama
-
MzScheme
: the core compiler, interpreter, and run-time system
-
DrScheme
: the programming environment
DrScheme memiliki beberapa variant. Untuk menggunakan
Scheme
standar:
Pilih Module (Choose Language— Module)
Definisikan #lang scheme pada definition area.
Tail Reculsion
Operasi disebut tail recursion jika di panggil reculsive
dan pada akhir dari fungsi operasi. Fungsi Tail reculsive dapat di convert
secara otomatis oleh compiler untuk iterasi dengan membuat nya cepat.
Scheme language definisi membutuhkan konversi scheme
language system all tail reculsive fungsi untuk menggunakan iterasi.
No comments:
Post a Comment