Learning Haskell

Und wenn am 21. Dezember die Welt untergeht, will ich heute noch eine neue Programmiersprache lernen.

Die Veröffentlichung von iBooks Author hat eine Kette von Konsequenzen gehabt, die mit elektronischen Büchern wenig zu tun haben. Zunächst zeigte sich Matt Gemmell wenig interessiert an einer proprietären eBook-Lösung und verwies auf die Alternative pandoc, mit dessen Hilfe sich aus Markdown-Texten unter anderem ePub-Bücher generieren lassen. pandoc wiederum wurde von John McFarlane in Haskell geschrieben.

Fiona lernt also programmieren, und ich lerne Haskell. Ebenfalls freiwillig. Der Zeitpunkt für meinen ersten ernsthaften Kontakt mit einer statisch typisierenden höheren Programmiersprache hat natürlich mit meinem Alter zu tun. Nach vielen Jahren mit dynamischen Programmiersprachen möchte man einfach mal was Solides. Einen Saab. Zugleich habe ich – anders als Fiona – nicht mehr genug Nerven und Lebenszeit, um mich mit Assembler zu beschäftigen.

Warum Haskell? Mehrere Informatikerinnen in meinem Bekanntenkreis verdrehen bei der Erwähnung dieser advanced purely-functional programming language entnervt die Augen (Mathematikersprache) und haben gewisse Vorbehalte gegen das funktionale Paradigma. Das Haskell-Wiki reagiert auf diese Ablehnung mit einem engagierten Plädoyer, das mich restlos überzeugt. Zu meinen persönlichen Highlights gehören:

Rekursion statt Schleifen
Für einen Agnostiker gibt es keinen kürzeren Weg ans Ende des eigenen Verstandes als den Gedanken an die Unendlichkeit, und rekursive Strukturen können den dafür typischen Schauder viel intensiver erzeugen als eine spröde while True-Schleife.
Type Inference
Statisch typisierende Sprachen sind bekannt dafür, dass man Ihnen auch sehr offensichtliche Dinge ("Hello" ist eine Zeichenkette) explizit mitteilen muss. Haskell denkt mit.
Keine Seiteneffekte
Unverändliche Variablen sind nicht nur ein schönes Paradox, sondern auch eine enorme Beruhigung für Menschen, die schon mal stundenlang über den Wert einer Variablen zu einem bestimmten Zeitpunkt gegrübelt haben.
Faulheit
Haskell verbirgt die effiziente Verarbeitung großer Datenmengen hinter dem Namen einer Todsünde. Sehr sympathisch.

Dafür verzeihe ich Haskell sogar den geklauten Slogan für seine zwiebelartigen Bibliotheken.

Natürlich ist nicht alles eitel Sonnenschein. Die beste Haskell-Einführung – Learn You a Haskell for Great Good – beschäftigt sich über viele Kapitel vor allem mit der Verarbeitung von Listen bzw. der Beantwortung drängender Fragen (Which right triangle that has integers for all sides and all sides equal to or smaller than 10 has a perimeter of 24?). Erst in Kapitel 9 kommt Mr. Lipovača auf Hello world! zu sprechen. Das macht mich etwas misstrauisch, obwohl das Haskell-Wiki natürlich sofort versichert, dass die I/O-Monade auch ohne intime Kenntnis der Kategorientheorie genutzt werden kann.

Ok. Nicht nervös werden. Los geht's mit der ersten Frage: Wie hältst Du es mit dem Unicode? Die Antwort: Demnächst in diesem Blog.