Hari ini, ceramah oleh Henning Kerstan ("Trace Semantics for Probabilistic Transition Systems") menghadapkan saya pada teori kategori untuk pertama kalinya. Dia telah membangun kerangka teori untuk menggambarkan sistem transisi probablistik dan perilaku mereka secara umum, yaitu dengan set keadaan tak terbatas yang tak terhitung jumlahnya dan gagasan jejak yang berbeda. Untuk tujuan ini, ia naik melalui beberapa lapisan abstraksi untuk akhirnya berakhir dengan gagasan monad yang ia gabungkan dengan teori ukuran untuk membangun model yang ia butuhkan.
Pada akhirnya, ia membutuhkan waktu 45 menit untuk (secara kasar) membangun kerangka kerja untuk menggambarkan konsep yang awalnya dijelaskannya dalam 5 menit. Saya menghargai keindahan pendekatan (itu tidak menggeneralisasi baik pengertian lebih berbeda dari jejak) tapi bagi saya sebagai keseimbangan yang aneh namun.
Saya berjuang untuk melihat apa sebenarnya monad itu dan bagaimana konsep yang begitu umum dapat berguna dalam aplikasi (baik dalam teori maupun praktik). Apakah ini sepadan dengan usaha, hasil-bijaksana?
Karena itu pertanyaan ini:
Apakah ada masalah yang alami (dalam arti CS) di mana gagasan abstrak monad dapat diterapkan dan membantu (atau bahkan instrumental) untuk mendapatkan hasil yang diinginkan (sama sekali atau dengan cara yang lebih baik daripada tanpa)?
sumber
Jawaban:
Bertanya apakah kemunculan monad adalah wajar sama dengan menanyakan apakah suatu kelompok (dalam pengertian teori kelompok) adalah alami. Setelah Anda meresmikan sesuatu, dalam hal ini sebagai endofunctor, apakah itu memuaskan aksioma menjadi monad atau tidak. Jika memang memenuhi aksioma, maka seseorang mendapat banyak mesin teknis gratis.
Makalah Moggi Makalah tentang perhitungan dan monad cukup banyak menyegel kesepakatan: monad sangat alami dan berguna untuk menggambarkan efek komputasi secara terpadu. Wadlerdan yang lain menerjemahkan gagasan ini untuk menangani efek komputasi dalam bahasa pemrograman fungsional, dengan menggunakan koneksi yang functor adalah konstruktor tipe data. Ini menambahkan lapisan gula pada kue. FP monad memungkinkan perlakuan efek komputasi seperti IO yang akan sangat tidak alami tanpanya. Monads telah menginspirasi gagasan berguna yang terkait seperti panah dan idiom yang juga sangat berguna untuk menyusun program fungsional. Lihat tautan Wadler untuk referensi. FP monad adalah hal yang sama dengan teori kategori monad dalam arti bahwa untuk FP monad untuk bekerja persamaan yang sama perlu dipegang --- kompilator bergantung pada ini. Secara umum, penyajian monad berbeda (operasi dan persamaan yang berbeda tetapi setara), tetapi ini adalah perbedaan yang dangkal.
Sejumlah besar karya Bart Jacobs , untuk mengambil satu contoh, menggunakan monad. Banyak pekerjaan bermula dari batubara, yang merupakan teori umum sistem. Salah satu (banyak) kontribusi Jacobs ke daerah adalah pengembangan gagasan generik jejak semantik untuk sistem (digambarkan sebagai coalgebras) berdasarkan monad. Orang bisa berpendapat bahwa gagasan tentang semantik jejak adalah alami: Apa itu semantik suatu sistem? Daftar tindakan yang bisa diamati!
Salah satu cara untuk memahami monad adalah dengan memprogram pertama di Haskell menggunakan monad. Kemudian temukan salah satu dari banyak tutorial bagus yang tersedia (via google). Mulai dari sudut pemrograman, kemudian pindah ke sisi teoretis, mulai dengan beberapa teori kategori dasar.
sumber