Нет, вам не нужно поднимать книгу по теории категорий, чтобы понять Haskell.
Я использую Haskell в течение нескольких лет, и из любопытства подобрал некоторую теорию категорий, в этом действительно нет необходимости. С одной стороны, здорово видеть, как все эти абстракции вписываются в «общую картину», но я не сказал «О, черт возьми, мне просто нужно сделать этого профессора из Maybe
категории в []
s, а затем я могу сохранить принцесса!».
Теперь, в зависимости от того, что вы делаете с теорией типов Хаскелла, стоит на пороге.
Если вы только изучаете haskell , не пытайтесь понять каждый нюанс системы типов . Пожалуйста, не надо, это все равно, что пытаться сначала изучить метапрограммирование на C ++. Необычные типы являются отличными инструментами, но хорошее понимание функционального программирования превосходит понимание непредсказуемого полиморфизма.
Теперь, скажем, через год или два из Haskell вы хотите понять каждую тонкую часть работы системы типов Haskell, тогда да, некоторая теория типов может оказаться полезной.
Это поможет вам понять некоторую логику, лежащую в основе того, как все работает, плюс, честно говоря, это действительно крутая отрасль компьютерных наук IMO, на которую стоит обратить внимание. Вы можете выбрать те части, которые вас интересуют, и при этом узнать приличную сумму.
Для Haskell, рассматривая STLC, системы типа HM (System F) и, возможно, лямбда-куб (Haskell - это System Fw iirc) и изорекурсивные типы. Типы и языки программирования - отличный ресурс для начала и охватывает все это и многое другое.
Если вы действительно хотите выпить классную помощь и обнаружите, что вы - начинающий теоретик, идите тыкать в Agda или Coq. Они имеют «зависимые типы», на один шаг дальше в лямбда-кубе, чем Haskell. Зависимые типы позволяют типам зависеть от условий. Это означает, что типы достаточно сильны, чтобы фактически доказать теоремы. Для любопытных, поиск в Google "изоморфизма Карри Ховарда" должен принести некоторые интересные результаты.