Domain Modeling Made Functional MasterClass

4 x 4 hours remote workshop
Scott Wlaschin

Domain Modeling Made Functional MasterClass

No dates are scheduled for this workshop. Let us know if you think we should organize it near you, or if you'd like to book it on premise in your organisation.

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 exercises and build some small projects that take us all the way from high-level design to low-level implementation.

Who is this for?

This will be especially useful for people learning functional programming -- all concepts used in the workshop will be explained. Previous development experience is recommended.

What you'll learn

  • The concepts of functional programming
  • How to represent the nouns and verbs of a domain using types and functions
  • How to decouple the pure domain logic from the outside world
  • How to ensure that constraints and business rules are captured in the design
  • How to represent state transitions in the domain model
  • How to build a business workflow from smaller components
  • How to handle errors as part of the domain

By the end of the workshop you'll know how to build working solutions with rich domain models, using only functional programming techniques.


  • Introduction to functional programming
  • Functions and types
  • Composition as the fundamental principle
  • Overview of DDD principles
  • The importance of bounded contexts
  • Persistence ignorance
  • Onion/Hexagonal architecture and how this works with functional programming
  • Modeling requirements with algebraic types
  • Records, choices, and functions
  • Modeling constraints
  • Modeling states
  • Programming a workflow
  • Keeping IO at the edges
  • Handling domain errors
  • Composing complex functions
  • Evolving the domain
  • Dealing with changes in requirements


  • We will be using F# as our development language. No experience with F# needed.
  • Please install the F# compiler and an F#-friendly editor such as Visual Studio Code using the instructions at


It was a very beneficial workshop, practicalities, theory and coding all in a perfect balance. Anyone interested in meaningful software construction will find it rewarding.

– Post-workshop feedback

It was awesome. Scott is a marvellous teacher, the material, code, exercises were all top notch, satisfying the needs of all audiences from beginner programmer to senior architect. The only remaining question we had was when to have more of it. I’m looking forward to any classes he’d give in the future. Thanks for the mindshifting workshop.

– Post-workshop feedback

Scott Wlaschin

About Scott Wlaschin

Scott Wlaschin is a developer, architect and author. He is the author of the popular F# site, 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.

All workshops by Scott Wlaschin

No dates are scheduled for this workshop. Let us know if you think we should organize it near you, or if you'd like to book it on premise in your organisation.

Also check out