Wirawan Winarto

Microsoft Student Partner
See also: Other Geeks@INDC

Antara Nilai dan Fungsi di dalam F#

Xi Nian Kuai Le! Gong Xi Fa Cai!

Nah. Ini posting pertama saya dalam Bahasa Indonesia. Ini adalah permintaan beberapa orang teman supaya tulisan saya lebih mudah dicerna. Kali ini saya mau membahas materi yang sederhana dulu, yaitu tentang dasar-dasar nilai dan fungsi pada F#.

Di dalam bahasa F#, fungsi dan nilai sebenarnya tidak terbedakan. Hal ini disebabkan bagi F# fungsi merupakan nilai. Untuk lebih jelasnya, perhatikan kesamaan sintaks pada kode berikut :

#light

let angka = 20

let jumlah a b = a + b

Dari contoh di atas terlihat bahwa nilai dan fungsi mendapat perlakuan yang sama. Identifier angka mendapat nilai 20 dan demikian pula dengan fungsi jumlah secara otomatis mendapatkan nilai dari a + b. Karena fungsi sama dengan nilai, maka hal ini memungkinkan kita : membuat suatu fungsi yang menerima parameter berupa fungsi lain, membuat fungsi yang return value-nya berupa fungsi juga, memasukkan fungsi di dalam struktur data, dan lain-lain.

Hal lain yang perlu dicatat adalah pada pendeklarasian suatu fungsi di F# anda tidak perlu mendeklarasikan return layaknya bahasa pemrograman imperatif umumnya.

Fitur lain dari F# adalah kita tidak harus memberikan seluruh argumen sekaligus. Contohnya :

#light

let hitung a b = a + b

let tambahSatu = hitung 1

let hasil = tambahSatu 10

Meskipun nampak jelas bahwa fungsi hitung meminta dua argumen, namun kita bisa memberi nilai tidak secara sekaligus. Pada waktu saya mendeklarasikan tambahSatu, maka nilai 1 akan mengisi parameter pertama atau a. Pada saat itu, fungsi akan menunggu nilai berikutnya untuk mengisi parameter kedua. Ini disebut currying, diambil dari nama Haskell Curry.

Namun bagaimana jika saya mengharuskan dua argumen dipenuhi sekaligus? F# mengenal suatu konsep yang disebut dengan  tuple. Tuple mungkin dapat didefinisikan sebagai gabungan beberapa data dalam satu paket. Mirip anonymous type pada C# namun tanpa perlu mendeklarasikan ID variabelnya. Contoh pendeklarasian-nya :

#light

let koordinat (a,b) = a + b

let hasil = koordinat (2,3)

Dengan demikian pemanggilan fungsi koordinat harus diikuti dengan nilai tuple (a,b). Suatu tuple dapat menampung berbagai data yang berbeda tipe. Namun tuple tidak mampu menerima nilai dari tuple dengan struktur yang berbeda. Misalnya tuple (a,b) tidak dapat menerima tuple yang bernilai (1,4,"Halo",5) karena struktur-nya berbeda.

Itu saja sedikit gambaran sederhana tentang nilai dan fungsi di dalam F#.

Share this post: | | | |

Comments

deniar said:

Ini bahasa apaan sih? Aku baru tahu.... maaf keliatan kuper ya? :P

# February 11, 2008 2:20 PM

wirawan said:

bahasa functional F#. heheh... coba liat :

en.wikipedia.org/.../F_Sharp_programming_language

# February 11, 2008 5:45 PM