No, no necesita recoger un libro sobre teoría de categorías para comprender a Haskell.
He estado usando Haskell durante algunos años, y aprendí algo de teoría de categorías por curiosidad, realmente no es necesario. Por un lado, es genial ver cómo todas estas abstracciones encajan en "el panorama general", pero no dije "Oh, Dios mío, solo necesito hacer de esto un profunctor de la Maybe
categoría a []
s y luego puedo guardar el ¡princesa!".
Ahora, dependiendo de lo que esté haciendo con la teoría del tipo Haskell, está en la cerca.
Si solo está aprendiendo haskell , no intente comprender todos los matices del sistema de tipos . Por favor, no, es como tratar de aprender la metaprogramación de plantillas C ++ primero. Los tipos elegantes son herramientas excelentes, pero tener una buena comprensión de la programación funcional es mejor que comprender el polimorfismo impredecible.
Ahora, digamos que después de un año o dos de Haskell, está buscando comprender cada parte sutil de cómo funciona el sistema de tipos de Haskell, entonces sí, alguna teoría de tipos podría ser útil.
Le ayudará a comprender parte de la lógica detrás de cómo funcionan las cosas, además es francamente una rama realmente genial de la OMI de informática que vale la pena mirar. Puede elegir las partes que le interesan y aún así aprender una cantidad decente.
Para Haskell, mirando STLC, sistemas de tipo HM (Sistema F) y quizás el cubo lambda (Haskell es System Fw iirc) y tipos iso-recursivos. Los lenguajes de tipos y programación son un gran recurso para comenzar y cubren todo esto y mucho más.
Si realmente quieres beber el refresco y descubrir que eres un teórico del tipo incipiente, ve a Agda o Coq. Estos presentan "tipos dependientes", un paso más adelante en el cubo lambda que Haskell. Los tipos dependientes permiten que los tipos dependan de los términos. Esto significa que los tipos son lo suficientemente potentes como para probar teoremas. Para los curiosos, googlear "curry howard isomorphism" debería traer algunos resultados interesantes.