Racket und #lang

Racket steht – wie allen Lisp-Dialekten – das mächtige Werkzeug Makros zur Verfügung. Mit ihnen können wir die Sprache erweitern und an unsere Bedürfnisse anpassen. Dabei sind nicht nur einfache syntaktische Konstrukte möglich, nein, ganze Typsysteme (wie zum Beispiel „Typed Racket“) oder Concurrency-Systeme („core.async“ aus Clojure) können damit implementiert werden.

Ein weiterer Aspekt sind eingebettete domänenspezifische Sprachen (eDSL): mithilfe von Makros kann eine präzise, den Fachbegriffen der Domäne entsprechende Sprache mit angepasster Syntax, entwickelt werden.

Racket geht den Weg der DSLs noch ein Stück weiter: Hier können wir die DSLs ganz ohne Racket-Code drum herum verwenden. Wie aus einer eDSL eine DSL wird schauen wir uns heute an!

Weiterlesen...

'Was ist denn gerade der Stand?' und andere Fragen, die der Newsletter beantworten kann

Wer hätte das gedacht: Der gute alte Newsletter hat still und heimlich seinen Weg zurück in mein Leben gefunden. Aus diesem Anlass wollen wir heute mal die funktionale Progammierung beiseite lassen und uns einen Aspekt der Softwareentwicklung anschauen, der uns alle angeht: Kommunikation mit Teamkolleg:innen und Kund:innen.

Weiterlesen...

BOB 2023 – Retrospektive

Am 17.03.2023 fand die BOB, unsere alljährliche Entwickler:innenkonferenz, zum mittlerweile neunten Mal statt. Nach zwei reinen Onlineveranstaltungen fanden wir uns diesmal wieder vor Ort in den Räumen von Lohmann und Birkner Healthcare Services in Berlin zusammen.

Weiterlesen...

Monaden in Kotlin

Dieser Post ist ein Teil der Reihe über funktionale Softwarearchitektur in Kotlin. Im ersten ging es um funktionale Validierung, in diesem Teil geht es um Monaden. Diese sind in Kotlin vor allem praktisch, wenn es um die Beschreibung von Abläufen in der Domäne geht, die von technischer Logik zur Ausführung dieser Abläufe getrennt werden soll – und zwar unter Verwendung von kleinen domänenspezifischen Sprachen (DSLs).

In dieser Folge geht es darum, wie Monaden überhaupt funktionieren. Kotlin hat nämlich – wie viele funktionale Sprachen auch – dafür eine spezielle Syntax, auch wenn man sie nicht unter dem „M-Wort“ in der Dokumentation findet. Sie versteckt sich hinter dem Schlüsselwort suspend.

Weiterlesen...

Freie Monaden in Clojure

Monaden sind ein wichtiges Konzept in der funktionalen Programmierung mit immensem praktischen Nutzen, auch hier im Blog haben wir schon viel darüber geschrieben. Zum Beispiel zeigt der Artikel „Freie Monaden oder: Wie ich lernte, die Unabhängigkeit zu lieben“, wie freie Monaden in Scala eingesetzt werden können, um die Ausführung eines Programmes von dessen Beschreibung zu entkoppeln.

Hier werden wir die Fallstudie aus diesem Artikel aufgreifen und zeigen, wie wir in Clojure die Entkopplung mit Monaden erreichen können. Dabei zeigen wir, wie wir das nutzen können, um Testfälle zu schreiben; und wir werden zeigen, wie wir ganz einfach Mock-Tests für unsere monadischen Programme angeben können.

Weiterlesen...