Mehr Monaden in Aktion

Dieser Artikel ist der dritte einer Serie von Artikeln über Monaden in Haskell.

  • Im ersten Artikel der Serie haben wir die Grundlagen diskutiert.
  • Im zweiten Teil der Serie haben wir begonnen, eigene Monaden zur Lösung Software-technischer Aufgaben zu entwickeln und haben dabei die Fehler-Monade und die Listen-Monade kennen gelernt.

Im heutigen Teil möchten wir diesen Aspekt vertiefen und erneut demonstrieren, wie durch Monaden ein Stück Software modular und durch lokale Erweiterungen um neue Funktionalität ergänzt werden kann, ohne bestehende Teile zu verändern oder zu refaktorisieren.

Weiterlesen...

Systematisch eingebettete DSLs entwickeln in Clojure

In letzter Zeit sind in der Software-Entwicklung domänenspezifische Sprachen

  • kurz als DSL für „domain-specific language“ bezeichnet - populär geworden: Das Versprechen einer DSL ist es, für ein bestimmtes Anwendungsgebiet besonders kompakte und verständliche Programme zu ermöglichen. Diese Programme können außerdem auf technische Details verzichten, die nichts direkt mit dem Anwendungsgebiet zu tun haben.

Das Entwickeln einer konventionellen DSL ist aufwendig, da zur Implementierung DSL alles dazugehört, was bei einer „normalen“ Programmiersprachenimplementierung ebenfalls fällig ist: Lexer, Parser, Compiler oder Interpreter sowie IDE-Support. Aus diesem Grund sind substantielle Frameworks für die schnelle Entwicklung von DSLs entstanden, z.B. Spoofax, das Eclipse Modeling Project oder Xtext.

In funktionalen Sprachen gibt es allerdings häufig einen einfacheren Weg: die Entwicklung einer sogenannten eingebetteten DSL (kurz EDSL für „embedded DSL“). Dabei wird die Host-Sprache so eingesetzt, dass es so aussieht, als ob innerhalb der Host-Sprache eine DSL entsteht. Dies hat eine Reihe von Vorteilen:

Weiterlesen...

Zeitreisen mit persistenten Datenstrukturen

Zeitreisen mit persistenten Datenstrukturen

Wir schreiben das Jahr 2025. Längst haben soziale Plattformen im Internet uns vollständig von der Notwendigkeit eines guten Gedächtnisses befreit. Ein Großteil der Kommunikation ist für die Ewigkeit auf Servern gespeichert und kann jederzeit abgerufen werden.

In einem Anflug von Nostalgie erinnern wir uns an die guten alten Zeiten um das Jahr 2013 und fragen uns, warum unsere Lieblingsplattform es uns nicht erlaubt abzufragen, wer denn damals unsere „Freunde“ und Freundesfreunde waren.

Sicherlich nicht, weil das nicht möglich ist. Virtuelle „Zeitreisen“ wie diese sind durchaus möglich und in vielen Fällen sogar effizient realisierbar. Am Beispiel eines Freundschaftsgraphen, wie er in sozialen Plattformen zu finden ist, werden wir mit diesem Artikel versuchen, uns einer bestimmten Klasse von Datenstrukturen zu nähern und eine vergleichsweise einfache Lösung des Problems zu entwickeln.

Weiterlesen...