MyOwnSafe - Funktionale Programmierung in der Praxis - Teil 2

Die Active Group hat die Webanwendung MyOwnSafe für die MyOwnSafe GmbH entwickelt. Der Anwender kann in dieser Anwendung Informationen und Dokumente zu seinen Versicherungen, seinem Vermögen und sonstige persönliche Informationen ablegen und pflegen, sowie Vorkehrungen treffen um diese Informationen im Todes- oder Krankheitsfall bestimmten Personen zugänglich zu machen.

In einem vorherigen Artikel habe ich die Gesamtarchitektur und die eingesetzen Technologien beschrieben. Dieser Artikel soll an einem kleinen Ausschnitt der Software zeigen, wie die funktionale Programmierung in OCaml die Entwicklung vereinfachen und damit auch beschleunigen konnte.

Weiterlesen...

Ein Parser für HL7-Nachrichten in weniger als 180 Zeilen Haskell-Code

Ein Argument gegen die Benutzung funktionaler Sprachen in einem kommerziellen Produkt ist oft, dass es für solche „exotischen“ Sprachen nicht genügend Bibliotheken gäbe. Für ausgewachsene funktionale Sprachen wie Scala oder Haskell zieht dieses Argument längst nicht mehr, denn es gibt für beide Sprache eine Menge qualitativ hochwertiger Bibliotheken und Komponenten. Und sollte es doch mal vorkommen dass für ein etwas ungewöhnlicheres Problem keine Unterstützung durch eine Bibliothek vorhanden ist, kann man meistens in kurzer Zeit Abhilfe schaffen und sich selbst eine kleine Bibliothek zusammenstellen.

Heute wollen wir das anhand eines Parsers für HL7-Nachrichten durchexerzieren. HL7 ist ein weitverbreiteter Standard zum Austausch medizinischer Daten. Wir setzen diesen Standard bei uns in der Firma oft im Rahmen unseres Produktes Checkped MED ein, über das wir schon an anderer Stelle in diesem Blog berichtet haben. Da der Checkpad-Server hauptsächlich in Haskell geschrieben ist, benötigen wir in Haskell natürlich auch einen Parser für HL7-Nachrichten. Da es einen solchen nicht fertig erhältlich gibt, haben wir in kurzerhand selbstgeschrieben. Sie werden in diesem Artikel sehen, dass wir eine performante und robuste Implementierung in weniger als 180 Zeilen Haskell-Code erstellen können, und diese Zeilen enthalten auch die Datentypdefinition für die HL7-Nachrichten sowie Tests. Der Code des eigentlichen Parsers ist weniger als 50 Zeilen lang.

Weiterlesen...

Was ist funktionale Programmierung?

Was ist überhaupt „Funktionale Programmierung?“ Zur Beantwortung dieser Frage dürften sich viele Neueinsteiger in das Thema an Wikipedia wenden. Die entsprechende Seite in deutscher Sprache lässt aber einiges zu Wünschen übrig, was mich dazu veranlasst hat den Titel dieses Blogs einmal grundlegend zu erklären.

Weiterlesen...