Nemerle ist eine allgemeine, hochsprachliche, statisch typisierte Programmiersprache für die .NET-Plattform, die an der Universität Wrocław (Polen) ab etwa 2003 entwickelt wurde. Sie vereint funktionale, objektorientierte, imperative, aspektorientierte und reflektive Programmierung in einer Sprache und ist besonders für ihre leistungsfähige Makro-Technik bekannt.
Compiler und erste Schritte
Der Compiler heißt ncc und erzeugt Common Intermediate Language (CIL), wodurch volle Kompatibilität mit .NET und Mono entsteht. Ein klassisches Beispiel:
def Main() : void
System.Console.WriteLine("Hallo, Nemerle!")
Dank starker Typhinferenz sind Typdeklarationen meist überflüssig — der Compiler leitet die Typen aus dem Kontext ab.
Kernkonzepte
- Makros: Das Herzstück von Nemerle. Makros arbeiten auf dem Syntaxbaum und erweitern die Sprache selbst — etwa eigene Kontrollstrukturen oder DSLs, die wie eingebaute Konstrukte aussehen.
- Funktionale Mittel: Pattern Matching (wie in ML/OCaml), unveränderliche Datenstrukturen und Funktionen höherer Ordnung.
- Objektorientiert: Klassen, Vererbung und Interfaces wie in C#.
- Computation Expressions: Ähnlich wie in F# lassen sich Monaden-artige Abläufe definieren.
- XML-Literale: XML lässt sich direkt im Quellcode schreiben und per LINQ abfragen.
Praxis-Tipps
- Nemerle eignet sich für Compiler-Bau und Sprachwerkzeuge, weil Makros die Syntax erweitern können, ohne einen externen Präprozessor zu benötigen.
- Die Sprache gilt als mächtiger als C# und F#, hat aber nur eine kleine Community.
- Einsteiger mit F#- oder OCaml-Hintergrund finden die funktionalen Teile schnell vertraut.
Verwandte Grundlagen: C#-Befehle, F#-Befehle, Scala-Befehle, Compiler sowie die .NET-Alternativsprachen Boo-Befehle und Cobra-Befehle.