Baru-baru ini, saya menjadi sangat tertarik pada Haskell.
Ketika mencoba mempelajari konsep-konsep baru (misalnya kata kunci forall dan ST monad ) dan sistem tipe Haskell secara umum, saya terus mengalami konsep-konsep dari teori kategori dan kalkulus lambda . Jadi, saya bertanya-tanya:
Cabang matematika apa lagi yang penting untuk pemahaman yang kuat tentang sistem tipe Haskell?
Dapatkah saya melepaskan studi keras matematika ini dan sebaliknya fokus pada konsep-konsep terkait tertentu? (misalnya bilangan dalam lambda calculus.) Jika ya, konsep mana yang penting?
Saya berharap untuk mengambil Jenis dan Bahasa Pemrograman segera, namun, tolong sarankan sumber bacaan alternatif yang Anda rasa sesuai.
ST
monad. Sulit untuk menulis kode yang akan dikompilasi ketika saya tidak mengerti semua tanda tangan jenis yang relevan, jadi saya merasa meningkatkan pemahaman saya tentang sistem tipe akan lebih bijaksana.Jawaban:
Tidak, Anda tidak perlu mengambil buku tentang teori kategori untuk memahami Haskell.
Saya telah menggunakan Haskell selama beberapa tahun, dan mengambil beberapa teori kategori karena penasaran, itu benar-benar tidak perlu. Di satu sisi, itu keren untuk melihat bagaimana semua abstraksi ini cocok dengan "gambaran besar", tetapi saya tidak pergi "Ya ampun, saya hanya perlu membuat ini menjadi pencuri dari
Maybe
kategori ke[]
s dan kemudian saya dapat menyimpan putri!".Sekarang tergantung pada apa yang Anda lakukan dengan teori tipe Haskell di pagar.
Jika Anda baru belajar haskell, jangan mencoba memahami setiap nuansa dari sistem tipe . Tolong jangan, ini seperti mencoba mempelajari C ++ template meta-programming terlebih dahulu. Jenis mewah adalah alat yang sangat baik, tetapi memiliki pemahaman yang baik tentang pemrograman fungsional mengalahkan pemahaman polimorfisme impredikatif.
Sekarang katakanlah setelah satu atau dua tahun Haskell Anda mencari untuk memahami setiap bagian halus tentang bagaimana sistem tipe Haskell bekerja, maka ya, beberapa teori jenis mungkin membantu.
Ini akan membantu Anda memahami beberapa logika di balik bagaimana hal-hal bekerja, plus itu terus terang cabang ilmu komputer IMO yang sangat layak untuk dilihat. Anda dapat memilih bagian-bagian yang Anda minati dan masih belajar jumlah yang layak.
Untuk Haskell, melihat STLC, sistem tipe HM (Sistem F) dan mungkin lambda cube (Haskell adalah Sistem Fw iirc) dan tipe iso-rekursif. Jenis dan Bahasa pemrograman adalah sumber yang bagus untuk memulai dan mencakup semua ini dan banyak lagi.
Jika Anda benar-benar ingin meminum bantuan dingin dan mengetahui bahwa Anda adalah ahli teori tipe pemula, pergilah ke Agda atau Coq. Ini fitur "tipe tergantung", satu langkah lebih jauh di dalam kubus lambda daripada Haskell. Tipe tergantung membiarkan tipe tergantung pada persyaratan. Ini berarti jenisnya cukup kuat untuk benar-benar membuktikan teorema. Bagi yang penasaran, "kari isardisme kari" googling "harus memunculkan beberapa hasil menarik.
sumber