Hayır, Haskell'i anlamak için kategori teorisi hakkında bir kitap almanıza gerek yok.
Haskell'i birkaç yıldır kullanıyorum ve bir kategori teorisini meraktan aldım, gerçekten gerekli değil. Bir yandan, tüm bu soyutlamaların "büyük resim" e nasıl uyduğunu görmek güzel, ama gitmedim "Aman Tanrım, bunu Maybe
kategoriden bir profesör yapmalıyım []
ve sonra kaydedebilirim prenses!".
Şimdi Haskell türü teorisi ile ne yaptığınıza bağlı olarak çitin üzerinde.
Sadece haskell öğreniyorsanız , tip sisteminin her nüansını anlamaya çalışmayın . Lütfen, önce C ++ şablon meta programlamasını öğrenmeye çalışmak gibi. Süslü tipler mükemmel araçlardır, ancak fonksiyonel programlama hakkında iyi bir anlayışa sahip olmak, imkansız polimorfizmi anlamaktan geçer.
Şimdi bir ya da iki yıl Haskell'den sonra, Haskell'in tip sisteminin nasıl çalıştığının her ince parçasını anlamak istediğinizi varsayalım, o zaman evet, bir tür teori yararlı olabilir.
İşlerin nasıl çalıştığının arkasındaki mantığın bazılarını anlamanıza yardımcı olacak, ayrıca açıkçası bakmaya değer bilgisayar bilimi IMO'sunun gerçekten harika bir dalı. İlgilendiğiniz parçaları kiraz olarak seçebilir ve yine de iyi bir miktar öğrenebilirsiniz.
Haskell için, STLC, HM tipi sistemlere (Sistem F) ve belki lambda küpüne (Haskell Sistem Fw iirc'dir) ve iso-özyinelemeli tiplere bakmak. Türler ve Programlama dilleri, başlamak için harika bir kaynaktır ve bunların hepsini ve daha fazlasını kapsar.
Eğer gerçekten yardım almak ve tomurcuklanan bir teorisyen olduğunuzu keşfetmek istiyorsanız, Agda veya Coq'ta dürtmeye gidin. Bunlar lambda küpünde Haskell'den bir adım ötede "bağımlı tipler" özelliğine sahiptir. Bağımlı türler, türlerin terimlere bağlı olmasına izin verir . Bu, türlerin teoremleri gerçekten kanıtlayacak kadar güçlü olduğu anlamına gelir. Meraklı, googling "köri howard izomorfizm" için bazı ilginç sonuçlar getirmelidir.