Monad di Haskell: abstraksi yang elegan
- Monad bukan sekadar konsep yang mirip
Promise, melainkan alat abstraksi yang kuat
- Melalui typeclass
Monad, kode dapat digunakan ulang di berbagai konteks (Maybe, [], IO, State)
- Fungsi generik (misalnya
sequence, mapM) dapat dimanfaatkan di semua monad
- Penulisan kode yang mudah dibaca dimungkinkan dengan notasi
do
- Berbagai konteks komputasi dapat diekspresikan secara konsisten dengan satu pola
Pendekatan berbeda OCaml: pragmatisme
- Menggunakan sistem modul dan functor alih-alih typeclass
- Karena tidak ada dukungan sintaksis (misalnya notasi
do), kode monad menjadi lebih bertele-tele
- Karena efek samping langsung diperbolehkan, monad tidak menjadi keharusan
- Lebih menyukai penggunaan langsung tipe
option, result dan abstraksi pada tingkat modul
- Memungkinkan penulisan kode yang mudah dipahami secara lokal
Perbedaan filosofi desain bahasa
- Haskell: fungsional murni sehingga monad wajib untuk mengelola efek
- OCaml: mengizinkan efek samping sehingga penulisan kode bisa lebih langsung
- Ada perbedaan filosofis tentang abstraksi, eksplisititas, dan peran sistem tipe
- Haskell menekankan konsistensi dan abstraksi, sementara OCaml menekankan kejelasan dan pragmatisme
Pandangan penutup
- Pendekatan abstraksi yang konsisten di Haskell sangat menarik terutama untuk sistem yang kompleks
- Pendekatan langsung OCaml berguna dalam situasi ketika pemahaman cepat sangat penting
- Typeclass dan dukungan sintaksis memungkinkan penataan kode yang sangat elegan di Haskell
- Kedua pendekatan sama-sama memiliki kelebihan masing-masing, dan pilihan yang tepat perlu disesuaikan dengan konteks
Belum ada komentar.