Functional Data Modeling

Learn how to use functional Scala to construct simple, precise, and flexible models of any business domain.

Book a Training


Data modeling is a critical skill of modern application development, determining how easy it is to write application logic, how easy it is to update the application in response to changing requirements, and how many failure scenarios are caught at compile time versus runtime. Although most Scala developers are familiar with object-oriented data modeling, many do not have a deep understanding of functional data modeling and how it differs from the former.

In this course, developers will learn how to use functional Scala to construct simple, precise, and flexible models of any business domain. Along the way, they will explore functional concepts like algebraic data types, and techniques like smart constructors. Developers will leave with excellent skills for fully utilizing Scala’s functional data modeling capabilities inside their applications.

Are you interested in attending a private training course?

Register for Private Training

Are you interested in attending a public training course?

Register for Public Training

Who Should Attend

Scala developers who want to use the functional side of Scala to create simpler, more precise, and more flexible data models than traditionally possible with object-oriented data modeling.


Good working knowledge of Scala, including familiarity with immutable data, pattern matching, and basic recursion. Developers who have attended Functional Scala Foundations will be well-prepared for this course.


  • Sealed traits and case classes
  • Algebraic data types
  • Polymorphic algebraic data types
  • Generalized algebraic data types
  • Smart constructors and refined types
  • Phantom types
  • Declaration-site variance
  • Existential types
  • Throwing away irrelevant details
  • Creating precise domain models
  • Making illegal states unrepresentable
Last year, we started using ZIO, as a superior alternative to tagless-final and Monad transformers. ZIO is a powerful effect monad with a lot of combinators, interop with important libraries, and new integrations with OpenTracing and logging. ZIO lets us focus on our business logic, making it easier to understand and test, and there is no doubt ZIO will be one of the significant parts of Scala infrastructure over the coming years!
Jan de Groot
DHL Parcel Netherlands - Head of Development

Related Courses

A Crash Course in Functional Scala

Learn how functional Scala enables you to write better code, with high productivity and testability.

# fp
24 hours

Functional Design

Learn how to benefit from functional programming techniques across your application, in a way that’s highly accessible to the whole team and new hires.

# fp
24 hours

Functional Effects

Learn how to solve complex problems in asynchronous, concurrent programming using the ZIO library.

# fp
24 hours

Book a Training