Frege – funktionale Programmierung auf der JVM

Gottlob Frege war ein deutscher Mathematiker und Logiker, der lange vor Alonzo Church über Funktionen mit Funktionen als Argumente nachdachte. Ein schöner Name für eine funktionale Programmiersprache.

Die Sprache Frege lehnt sich stark an Haskell an, nutzt aber nach Möglichkeit die Gegebenheiten der JVM aus. Interessanterweise folgt Frege nicht dem üblichen Ansatz, direkt zu Bytecode zu compilieren, es erstellt stattdessen erst Java-Klassen (die allerdings weniger zur Abendlektüre geeignet sind) und ruft für diese den Java-Compiler auf.

Die auffälligsten Unterschiede zu Haskell sind die Übernahme des Package-Prinzips und von Private-Modifiern (statt Exportlisten) sowie die Nutzung nativer Strings und Primitive. Einige syntaktische Seltsamkeiten von Haskell wurden gestrichen, aber insgesamt fallen die Unterschiede gering aus.

Die Auswahl an Bibliotheken ist überschaubar und auch das Prelude (das Analogon zum Package java.lang) weist noch einige Lücken auf. Trotzdem macht das Vorhandene einen recht soliden Eindruck, es ist genug Dokumentation zum Loslegen vorhanden und es macht Spaß, ein wenig mit Frege herumzuspielen. Wenn die Kernsprache erst einmal stabil ist, sollte es kein Problem sein, geeignete Haskell-Bibliotheken mit geringen Anpassungen zu übernehmen. Außerdem ist auch der Zugriff auf Java-Bibliotheken ebenfalls recht unkompliziert möglich.

Die vorhandenen Ansätze lassen einen umsichtigen Umgang mit Typklassen erkennen (z.B. werden Funktionen wie null oder length verallgemeinert, so dass sie nicht nur auf Listen arbeiten). Das lässt darauf hoffen, dass bei künftigen Erweiterungen der Typklassen-Hierarchie einige von Haskells Fehlern vermieden werden.

Frege ist eine interessante Alternative zu den anderen JVM-Sprachen, deshalb hoffe ich sehr, dass dieses ambitionierte Projekt vorankommt und sich eine Community herausbildet.

Werbeanzeigen