Tail Calls

Wer mit funktionalen Programmierern über die Programmierung an sich diskutiert, wird früher oder oder später auf das Thema proper tail calls bzw. im deutschen Endrekursion stoßen. Funktionale Programmierer halten dieses Feature bei der Programmierung mit einer Selbstverständlichkeit für unerlässlich, die Vertreter anderer Sprachen oft als fanatisch empfinden.

Tatsächlich ist Endrekursion in der funktionalen Programmierung von zentraler Bedeutung. Jedoch sollte sie objektorientierten Programmierern eigentlich noch wichtiger sein.

Weiterlesen...

Continuations in der Praxis

Gewisse Konzepte, die in der funktionalen Programmierung häufig vorkommen, sind in imperativen oder objekt-orientierten Sprachen nahezu unbekannt. Eines dieser Konzepte sind Continuations. Kurz gesprochen ermöglichen Continuations den Zugriff auf den „Rest“ einer Berechnung. Diesen Rest kann man sich dann beispielsweise merken und zu einem späteren Zeitpunkt ausführen.

In diesem Artikel möchte ich Continuations anhand eines praktischen Beispiels erklären. In einem früheren Artikel hatte ich schonmal die Architekur von Checkpad MED vorgestellt, eine elektronische Krankenakte deren Serverkomponente fast vollständig mit Haskell realisiert ist. In dieser Serverkomponente gibt es einen Teil, welcher aus Krankhausdaten die Elemente der Benutzeroberfläche generiert. Nun soll sich natürlich bei Änderung der Krankenhausdaten auch die Benutzeroberfläche ändern. Und genau dabei spielen Continuations eine wichtige Rolle…

Weiterlesen...

Schleifen in Scala

Wer mit funktionaler Programmierung beginnt und sich Code-Beispiele anschaut, bemerkt schnell, dass die Code-Beispiele selten for- oder while-Schleifen verwenden. Dieser Artikel beschreibt in Scala, was funktionale Programmierer statt Schleifen verwenden und zeigt dabei, was es mit Endrekursion auf sich hat.

Weiterlesen...

Frege - rein funktionale Programmierung in der JVM

</img>

Die Auswahl an Programmiersprachen für die JVM ist riesig. Auch für funktionale Programmierer wird einiges geboten, von Scala über verschiedene ML-Dialekte bis hin zu Clojure. Die Nische der Haskell-artigen, also rein funktionalen Sprachen mit Bedarfsauswertung (lazy evaluation) und Typinferenz, blieb jedoch bislang unbesetzt, trotz wachsender Beliebtheit von Haskell außerhalb der JVM-Welt. Dies soll sich nun mit der neuen Programmiersprache Frege ändern. Der folgende Artikel soll einführend Idee und Motivation des Projekts vorstellen.

Weiterlesen...

Facebook setzt auf Haskell

Vor kurzem haben wir hier in diesem Blog die Veranstaltung Zurich FP Afternoon vorgestellt. Simon Marlow, einer der Hauptentwickler des weit verbreiteten Glasgow Haskell Compilers und inzwischen bei Facebook beschäftigt, hat auf dieser Veranstaltung einen Überblick über sein aktuelles Projekt Haxl gegeben. Ich möchte hier durch eine Zusammenfassung des Vortrags zeigen, dass inzwischen auch so große Firmen wie Facebook auf funktionale Programmierung setzen, um die Probleme der modernen Softwareentwicklung in den Griff zu bekommen. Die Folien zum Vortrag enthalten alle weiteren technischen Details.

Weiterlesen...