Nein, Sie müssen kein Buch über Kategorietheorie in die Hand nehmen, um Haskell zu verstehen.
Ich benutze Haskell seit ein paar Jahren und habe aus Neugier eine Kategorietheorie aufgegriffen, die wirklich nicht notwendig ist. Einerseits ist es cool zu sehen, wie all diese Abstraktionen in das "große Ganze" passen, aber ich habe nicht gesagt: "Oh mein Gott, ich muss dies nur zu einem Profunktor aus der Maybe
Kategorie bis []
s machen, und dann kann ich das speichern." Prinzessin!".
Je nachdem, was Sie mit der Haskell-Typentheorie machen, steht sie nun auf dem Zaun.
Wenn Sie nur Haskell lernen, versuchen Sie nicht, jede Nuance des Typsystems zu verstehen . Bitte nicht, es ist wie der Versuch, zuerst die Metaprogrammierung von C ++ - Vorlagen zu lernen. Ausgefallene Typen sind ausgezeichnete Werkzeuge, aber ein gutes Verständnis der funktionalen Programmierung ist besser als ein Verständnis des improvisierten Polymorphismus.
Nehmen wir nun an, nach ein oder zwei Jahren von Haskell möchten Sie jedes subtile Stück der Funktionsweise von Haskells Typensystem verstehen. Dann könnte eine Typentheorie hilfreich sein.
Es wird Ihnen helfen, einige der Logik zu verstehen, die dahinter steckt, wie die Dinge funktionieren, und es ist ehrlich gesagt ein wirklich cooler Zweig der IMO der Informatik, der einen Blick wert ist. Sie können die Teile auswählen, an denen Sie interessiert sind, und trotzdem eine anständige Menge lernen.
Für Haskell mit Blick auf STLC, HM-Typ-Systeme (System F) und möglicherweise den Lambda-Würfel (Haskell ist System Fw iirc) und iso-rekursive Typen. Typen und Programmiersprachen sind eine großartige Ressource für den Einstieg und decken all diese und noch viel mehr ab.
Wenn Sie wirklich die Kühlhilfe trinken möchten und feststellen möchten, dass Sie ein angehender Theoretiker sind, stöbern Sie in Agda oder Coq. Diese weisen "abhängige Typen" auf, die im Lambda-Würfel einen Schritt weiter als Haskell sind. Abhängige Typen lassen Typen von Begriffen abhängen . Dies bedeutet, dass die Typen mächtig genug sind, um Theoreme tatsächlich zu beweisen. Für den neugierigen, googelnden "Curry Howard Isomorphismus" sollten einige interessante Ergebnisse hervorgebracht werden.