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.

Advertisements

Ein Gedanke zu “Frege – funktionale Programmierung auf der JVM

  1. Daß das Angebot an Bibliotheken „überschaubar“ sei, ist eine sicher nett gemeinte, aber dennoch drastische Beschönigung. Der Autor hat sich entschlossen, das Projekt relativ früh öffentlich zu machen, deshalb ist da praktisch nur das, was man in einem Compiler so braucht.
    Man hat halt nur die Wahl: da so ein Projekt nie „fertig“ ist (hast du ein vollständiges API, hast du noch lange keine IDE oder eine Web-Framework), kommt es entweder nie ans Licht der Öffentlichkeit, oder eben unvollständig.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s