Domain modeling is usually implemented using OO design. In this approach of "nouns-first" we design object hierarchies using subtyping to model the various elements of the domain. In this talk we will take a different approach using Scala:

1. Start with focus on verbs first.
2. Think how we can model domain behaviors using pure functions grouped within extensible modules.
3. Use an algebraic approach towards evolution of modules,the algebra being composed of functions,types and laws.
4. See how the domain algebra can be constructed from categorical structures like monoids, functors and monads
5. Discuss how the functional patterns lead to compositionality - an extremely important quality that scales your domain model.