includes an exploration of functional design patterns and considers how these can be