No, non è necessario prendere un libro sulla teoria delle categorie per capire Haskell.
Uso Haskell da alcuni anni, e ho raccolto alcune teorie di categoria per curiosità, non è davvero necessario. Da un lato, è bello vedere come tutte queste astrazioni si inseriscono nel "quadro generale", ma non sono andato "Oh mio Dio ho solo bisogno di fare di questo un profuncore dalla categoria Maybe
a []
s e poi posso salvare la principessa! ".
Ora, a seconda di cosa stai facendo, la teoria del tipo di Haskell è in pericolo.
Se stai semplicemente imparando haskell non provare a comprendere ogni sfumatura del sistema di tipi . Per favore no, è come cercare di imparare prima la meta-programmazione dei template in C ++. I tipi di fantasia sono strumenti eccellenti, ma hanno una buona conoscenza della programmazione funzionale e comprendono il polimorfismo impredicativo.
Ora diciamo che dopo un anno o due di Haskell stai cercando di capire ogni sottile aspetto di come funziona il sistema di tipi di Haskell, quindi sì, alcuni tipi di teoria potrebbero essere utili.
Ti aiuterà a capire una parte della logica dietro a come funzionano le cose, in più è francamente una vera e propria branca dell'IMS informatica che vale la pena guardare. Puoi selezionare le parti che ti interessano e imparare ancora una quantità decente.
Per Haskell, guardando STLC, sistemi di tipo HM (Sistema F) e forse il tipo lambda cube (Haskell è System Fw iirc) e iso-ricorsivo. Tipi e linguaggi di programmazione sono una grande risorsa per iniziare e riguardare tutto questo e molto altro ancora.
Se vuoi davvero bere l'aiuto del freddo e scoprire che sei un teorico del tipo in erba, vai a colpire Agda o Coq. Questi dispongono di "tipi dipendenti", un passo avanti nel cubo lambda rispetto a Haskell. I tipi dipendenti consentono ai tipi dipendono in termini. Ciò significa che i tipi sono abbastanza potenti da dimostrare effettivamente i teoremi. Per i curiosi, googlando "l'isomorfismo di curry howard" dovrebbero portare alcuni risultati interessanti.