Transducer: Komposition, Abstraktion, Performance

Funktionen höherer Ordnung wie map, fold, filter sind aus keinem funktionalen Programm wegzudenken. Mit ihrer Flexibilität sind sie das Mittel der Wahl für Operationen auf Kollektionen aller Art. Allerdings beschränkt sich ihr Anwendungsbereich nicht nur auf klassische Listen oder Vektoren. In diesem Artikel betrachten wir fundamentalere Eigenschaften dieser Operationen und werfen insbesondere einen Blick auf die sogennanten Transducer in der Programmiersprache Clojure. Weiterlesen...

Mit Nix raus aus der Versionshölle

Wer kennt es nicht: Man startet ein neues Softwareprojekt oder steigt bei der Entwicklung eines bestehenden Projektes mit ein und muss erst mal zahlreiche Compiler, Interpreter, Editoren, Abhängigkeiten und Weiteres installieren. Dabei heißt es nicht selten, man soll davon die Version 1.2.24-50rc4 mit Bugfix-Patch 19 installieren, sonst funktioniert es nicht.

Mit dem Nix-Paketmanager eröffnet sich uns die Möglichkeit deklarativ zu beschreiben, wie unser lokales Setup auszusehen hat. Dabei spielt es (fast) keine Rolle, auf was für einem unixbasierten Betriebssystem wir unterwegs sind.

In diesem Artikel sehen wir beispielhaft an einer Entwicklungsumgebung für Elixir, wie einfach, schnell, non-invasiv und versionierbar man eine Entwicklungsumgebung bereitstellen kann. Weiter lernen wir eine Möglichkeit kennen, bestimmte Versionen eines Pakets zu installieren. Weiterlesen...

Freie Monaden oder: Wie ich lernte, die Unabhängigkeit zu lieben

Eine enge Kopplung der Beschreibung von Programmteilen und deren Ausführung führt unweigerlich zu Problemen, spätestens beim Testen der Software. Daher wird in diesem Artikel anhand von praktischem Code erklärt, wie uns das Konzept der freien Monade dabei hilft, Beschreibung und Ausführung sauber und elegant voneinander zu trennen.

Weiterlesen...