Ні, вам не потрібно брати книгу з теорії категорій, щоб зрозуміти Haskell.
Я декілька років використовую Haskell і з цікавості підібрав якусь теорію категорій, це справді не потрібно. З одного боку, здорово бачити, як усі ці абстракції вписуються в "велику картину", але я не пішов "О мій боже, мені просто потрібно зробити це профайнерами від Maybe
категорії до []
s, і тоді я можу зберегти принцесо! ».
Тепер залежно від того, що ти робиш із теорією типу Haskell, знаходиться на огорожі.
Якщо ви просто вивчаєте haskell , не намагайтеся зрозуміти кожен нюанс системи типу . Будь ласка, не варто, це як спробувати спочатку вивчити метапрограмування шаблонів на C ++. Фантазійні типи - чудові інструменти, але добре розуміння функціонального програмування перемагає розуміння непередбачуваного поліморфізму.
Тепер скажімо, через рік-два Haskell ви шукаєте, щоб зрозуміти кожну найтоншу частину того, як працює система типів Haskell, тоді так, якась теорія типів може бути корисною.
Це допоможе вам зрозуміти деяку логіку, якою працюють справи, плюс це, відверто кажучи, справді класна галузь ІМО інформатики, яку варто подивитися. Ви можете вибрати вишні частини, які вас зацікавили, і все одно навчитися пристойної кількості.
Для Haskell, дивлячись на STLC, системи типу HM (System F) та, можливо, куб лямбда (Haskell є System Fw iirc) та ізорекурсивні типи. Типи та мови програмування - це чудовий ресурс для початку та охоплює все це та багато іншого.
Якщо ви дійсно хочете випити круту допомогу і дізнаєтесь, що ви теоретик-початківець, натисніть на Агду чи Кок. Вони мають "залежні типи" на крок далі в кубі лямбда, ніж у Haskell. Залежні типи нехай типи залежать від термінів. Це означає, що типи досить потужні, щоб фактично довести теореми. Для допитливих гугла "ізоморфізм каррі-хоарда" повинен принести кілька цікавих результатів.