Domain Modeling Made Functional
Functional programming and domain-driven design might not seem to be a good match, but in fact functional programming can be an excellent approach to designing decoupled, reusable systems with a rich domain model. This workshop will show you why.
This will be a hands-on workshop designed for beginners in functional programming. We'll do lots of domain modeling exercises starting with some simple models and then enhancing them with constraints, state machines, error handling, commands and events, and so on.
We'll cover these topics in detail:
The core concepts of functional programming and how they can be applied to Domain Driven Design
- How to represent the nouns and verbs of a domain (e.g. the ubiquitous language) using types.
- Why representing the domain model using types is better than UML or other documentation (hint: it can never get out of sync)
- How to capture constraints and business rules in the domain model itself instead of being buried in the implementation
- How to represent state transitions
- How to treat errors as a part of the domain
- How to build a complete business workflow from smaller components using composition
- How to design a functional architecture with bounded contexts, validation, I/O and on.
At the end of the workshop you'll know how to accurately represent a rich domain using some simple code which can then be used as the starting point for an implementation.
Scott Wlaschin is a developer, architect and author. He is the author of the popular F# site fsharpforfunandprofit.com, and the book "Domain Modeling Made Functional", published by Pragmatic Bookshelf.
Known for his non-academic approach to functional programming, Scott is a popular speaker and has given talks at NDC, F# Exchange, DDD Europe, and other conferences around the world.