Exploring F# (part. 1)
Bagi Anda yang suka functional programming, tentu sudah merasakan lezatnya pemrograman fungsional, dan jika anda pernah mendengar F# tentu pasti anda sudah pernah mengeksplorasinya. nah, bagi anda yang belum pernah mengeksplornya, silahkan baca postingan ini :).
1. output, main - main dengan fsi.exe CLI
eits, CLI yang ini bukan CLI yang itu, eh anu, maksud saya cli yang ini itu command line interpreter. ok, jadi ceritanya sudah install F# 1.9.3.14, nah sekarang kita main - main dengan command prompt. langsung panggil fsi.exe dan kita mulai eksplorasi kita:
isinya yang standar - standard saja, pertama kita say "hello world" model saya (adopsi K&R :) ), terus kita buat deklarasi variable x secara salah, tanpa nilai. terus buat lagi yang benar, kita isi string, setalah itu kita tampilkan nilai x. sekarang coba kita buat fungsi kali, test eksekusi kali, assign fungsi kali ke yang lain, test yang lain itu. dah, keluar (silahkan lanjutkan eksplorasi dengan cmd prompt sepuasnya)
2. fungsi, sekarang kita pake IDE nih,
sekarang kita akan menggunakan IDE untuk perangkat bantu, silahkan pake IDE anda, tentunya anda pasti punya VS kan? :), ok, saya pake sharpDevelop 3.0 beta, keduanya bisa di pake untuk kompilasi F#. pada bagian ini saya akan mencontohkan membuat sebuah fungsi dengan F#, membuat fungsi di F# sangat mudah (namanya juga functional language) inilah dia salah satu selling point dari functional language, juga di F# (uhui! syntactic sugar..syntactic sugar). dalam contoh kali ini saya sekali lagi membuat fungsi factorial.
ok, sepuluh baris pertama itu cuman main - main saja, nah deklarasi fungsi dimulai pada baris ke-11, saya menggunakan keyword rec untuk definisikan fungsi rekursif. FYI, di F#, model deklarasi (semantiknya sih) kondisionalnya berbeda dengan bahasa non fungsional lain. skema : IF <kondisi> THEN <aksi> ELSE <aksilain> itu berlaku di pemrograman non fungsional, kalau di pemrograman fungsioal kaya F# ini nih jadinya IF <kondisi> THEN <return something> else <return something else> oleh karena itulah skema if-then-else di F# harus punya else; oleh karena permasalahan itulah membuat fungsi rekursif lebih di sukai disini.
terus di sana adalagi keyword match ... with; nah ini merupakan keyword untuk pattern matching, mirip - miriplah dengan switch...case. tiap kondisi matchingnya di pisahkan dengan vertical bar, return untuk tiap kondisi yang matching diungkapkan dengan tanda '->' . o iya, di sana ada fungsi - fungsi built-in yang gak punya return value (prosedur), sebenarnya gak harus di tangkap oleh variabl tertentu jadi saya menggunakan underscore '_' yang menandakan bahwa nilai variabel ini (_) gak penting. akhirnya, mari kita lihat hasil pelariannya (runningnya :P):
nah, itu dia hasilnya. yup, sementara ini dulu, nanti di sambung lagi (harus di pisah biar cepat lunas utangnya), bagian ke-2 nanti saya insyaaAllah akan mencoba menjelaskan tipe data/struktur data. jadi selamat ber-eksperimen ria.