Maaf, saya tidak tahu artikel atau buku yang membahas secara rinci perbedaan penggunaan untuk semua konstruksi tersebut, tetapi saya dapat memberi Anda beberapa tautan ke sumber daya individu.
Pola yang cukup umum adalah membangun trafo monad daripada monad sederhana (lihat juga tautan di paragraf berikutnya). Ini pada dasarnya berarti Anda membangun sesuatu yang harus dikombinasikan dengan monad lain, menghasilkan monad yang lebih kompleks yang mampu menangani fitur keduanya.
Di Real World Haskell ada beberapa bab tentang monad. Pada Bab 14. Monads penulis menjelaskan dasar-dasar dan beberapa penggunaan umum (mungkin, daftar, status). Bab 15. Pemrograman dengan monad memberikan lebih banyak penjelasan tentang bagaimana menggunakannya secara efektif (ini mencakup pembaca monad juga). Bab berikut menjelaskan cara menggunakan Parsec , tetapi mungkin lebih menarik untuk mencari artikel yang membahas cara kerjanya: ini harus menjadi contoh yang sangat baik dari penggunaan monad yang terorganisir dengan baik untuk penguraian. Fianlly, Bab 18. Transformator monadmemperkenalkan cara kerja trafo monad dan kemudian menunjukkan cara membuatnya, selangkah demi selangkah. Pertimbangan terhadap bagian terakhir dari bab ini juga menarik.
Saya pernah membaca pertanyaan yang sangat menarik tentang SO tentang penggunaan kreatif monad . Tautan yang diusulkan adalah bacaan yang luar biasa tentang topik tersebut. Dengan semangat itu, saya mencoba menanyakan hal yang sama untuk panah : Saya pasti mendapat jawaban yang lebih sedikit daripada yang ada di monad, tapi tetap saja yang menarik.
Sehubungan dengan pola OOP oleh kelompok berempat, ada satu set bagus dari 3 artikel oleh IBM tentang topik dalam seri pemikiran fungsional mereka . Bahasa fungsional target adalah Scala. Mereka melanjutkan dengan menjelaskan pola desain biasa di OOP dan menunjukkan bagaimana mereka memetakannya ke dalam Scala.
- Pemikiran fungsional: Pola desain fungsional, Bagian 1 . Di sini mereka mencakup pabrik, metode templat, strategi, kelas terbang. Intinya adalah dengan memiliki fungsi sebagai nilai kelas satu, semuanya jauh lebih sederhana.
- Pemikiran fungsional: Pola desain fungsional, Bagian 2 . Ini tentang java dan groovy . Ini alamat pola adaptor.
- Pemikiran fungsional: Pola desain fungsional, Bagian 3 . Di sini mereka berbicara tentang pola penafsir. Sekali lagi, bahasa targetnya asyik.
Artikel yang paling relevan dengan pertanyaan Anda pasti yang pertama, tapi dua lainnya mungkin bacaan terkait yang menarik.