Part 3. Applied functional programming

 

You have learned everything you need to know to easily write real-world applications using functional programming! As proof, in this part we will implement such a real-world application that uses Wikidata as a data source. We will apply all the techniques we learned earlier in the book and show that they can be used to create readable and maintainable code.

In chapter 11 we will introduce requirements for an application that generates a very peculiar travel guide. We will need to create an immutable-based data model and use proper types in signatures, including IO to integrate with Wikidata, use caching and multiple threads to make the application fast. We will wrap all of these concerns in pure functions and additionally show how we can reuse our object-oriented design intuitions in the functional world. As has been the case in the first 10 chapters, we will still keep maintainability, readability, and testability in mind.

In chapter 12 we will show how to test the application we developed in chapter 11 and how easy it is to maintain, even in the presence of big requirement changes. We will also show how we can use tests to discover unknown bugs and test-driven development to implement new business features.