Higher-Kinded Data for Configurations in Haskell

Many applications use configurations to customize their behavior at runtime. The parameters in these configurations can have default values that are used if nothing else is specified. Other values, such as passwords, have no default values and must therefore always be provided when starting the application.

In this article, we will go through several iterations to model configurations in our programs using higher-kinded data in Haskell.

Read on...

Functional Programming in Practice: Validation with Applicative Functors

Our first article in the series „Functional Programming in Practice“ on the topic of data validation with applicative functors.

Read on...

Transducer: Composition, Abstraction, Performance

Transducer: Composition, Abstraction, Performance

Higher-order functions like map, fold, filter are indispensable in any functional program. With their flexibility, they are the tool of choice for operations on collections of all kinds. However, their scope of application is not limited to classic lists or vectors. In this article, we examine more fundamental properties of these operations and take a particular look at so-called transducers in the Clojure programming language.

Read on...

Compound Data in Clojure

This post continues our Clojure introduction (Part 1, Part 2, Part 3). This time we‘re covering compound data.

Read on...

Functional Lenses

Lenses are a functional abstraction that have proven very useful to us in several projects. With them, you can very effectively define, query, and especially modify complex properties of larger data structures. Lenses make properties first-class citizens that you can abstract over and combine.

This article aims to show what lenses are and how to use them. The programming language used is Clojure, which we currently use in a lot and enjoy. Some tutorials for the language can be found, for example, here.

Read on...