Nie, nie musisz wybierać książki na temat teorii kategorii, aby zrozumieć Haskella.
Używam Haskell od kilku lat i z ciekawości wybrałem teorię kategorii, to naprawdę nie jest konieczne. Z jednej strony fajnie jest zobaczyć, jak te wszystkie abstrakcje pasują do „dużego obrazu”, ale nie poszedłem „O rany, muszę tylko uczynić z tego profesora z Maybe
kategorii do []
s, a potem mogę zapisać księżniczka!".
Teraz w zależności od tego, co robisz z teorią typu Haskell, jest na ogrodzeniu.
Jeśli dopiero się uczysz , nie próbuj zrozumieć każdego niuansu systemu typów . Proszę nie, to tak, jakby najpierw nauczyć się meta-programowania szablonów C ++. Fantazyjne typy są doskonałymi narzędziami, ale dobre zrozumienie programowania funkcjonalnego przewyższa zrozumienie impredykatywnego polimorfizmu.
Powiedzmy teraz, że po roku lub dwóch Haskell chcesz zrozumieć każdy subtelny element tego, jak działa system typów Haskell, to tak, niektóre teorie typów mogą być pomocne.
Pomoże ci zrozumieć część logiki stojącej za tym, jak to działa, a ponadto jest to naprawdę fajna gałąź informatyki IMO, na którą warto spojrzeć. Możesz wybrać części, które Cię interesują, i nadal nauczyć się przyzwoitej kwoty.
Dla Haskella, patrząc na STLC, systemy typu HM (System F) i być może kostkę lambda (Haskell to System Fw iirc) i typy izo-rekurencyjne. Typy i języki programowania to świetne źródło informacji na początek i obejmuje wszystkie te i wiele więcej.
Jeśli naprawdę chcesz wypić fajną pomoc i odkryć, że jesteś początkującym teoretykiem, idź na Agdę lub Coq. Obejmują one „typy zależne”, o krok dalej w sześcianie lambda niż Haskell. Typy zależne pozwalają typom zależeć od warunków. Oznacza to, że typy są wystarczająco potężne, aby faktycznie udowodnić twierdzenia. Dla ciekawskich, googlujących się w „izomorfizmie curry Howarda” powinno przynieść interesujące wyniki.