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.