Saya pikir satu hal yang mungkin Anda temui adalah sesuatu yang saya temui juga ketika mempelajari pemrograman fungsional, yaitu dengan pemrograman fungsional Anda dapat (dan hampir harus) berpikir / bekerja pada tingkat yang lebih tinggi daripada yang Anda lakukan dengan pemrograman imperatif.
Apa yang Anda temukan sebagai kurang ekspresif, saya pikir sebenarnya lebih ekspresif: Anda tidak perlu menguraikan setiap detail kecil dan dapat melakukan lebih banyak dengan lebih sedikit kode dalam pemrograman fungsional - ada lebih banyak kekuatan untuk apa yang Anda tulis.
Sebagai contoh, saya dapat menulis secara imperatif:
for each (Person person in people)
print(person.name)
yang benar-benar terbaca sebagai bahasa Inggris.
Versi Haskell mungkin (dan ini bukan Haskell yang valid, tetapi hanya untuk perbandingan sintaksis):
map (print . name) people
yang membutuhkan lebih sedikit kode dan lebih sedikit pertengkaran detail - Saya tidak perlu memecah hal-hal menjadi satu lingkaran dan variabel (s) ( for each (...)
), map
fungsi mengurus itu untuk saya.
Bekerja pada level itu bisa memerlukan waktu untuk membiasakan diri. Jika ada yang membantu, Haskell mungkin adalah waktu terberat saya belajar bahasa baru sejak saya mulai pemrograman, dan saya tahu> 10 bahasa (termasuk Lisp). Itu benar-benar layak dipelajari.