14:45 - 15:45
It is well known that functional programming is a great match for tactical domain-driven design. For functional programmers, tactical DDD offers a bridge from the techniques they know to a workable application architecture. In the other direction, functional programming with its pervasive focus on immutability simplifies dealing with aggregates. This talk is about the benefits of FP beyond DDD, specifically the use of abstraction. Where DDD focuses on concrete models close to the domain, functional programmers use abstraction almost reflexively. Abstraction carries a certain risk in the OO world, but can yield great benefits from the systematic techniques available in FP: finding combinators and self-references in seemingly flat models, looking for algebraic structure, and abstraction over common elements. These techniques yield simpler and more flexible models than their concrete counterparts, and often yield properties of the domain not previously known. This talk shows how DDD can be extended with these techniques, yielding even more effective tactical design.