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.

Book a Training

Overview

Although functional programming theory is useful, most day-to-day functional programming does not require any category theory or even any type classes. Most problems can benefit from a domain-specific model, constructed using immutable data types and operators. Such functionally-oriented solutions are simple, composable, type-safe, and testable.

In this course, developers will learn how to write simple functional solutions to everyday business problems, without jargon and without type classes. Developers will learn how to construct type-safe and composable solutions to domain-specific problems, and how the single responsibility principle of object-oriented programming translates into orthogonality. When developers leave, they’ll have newfound ability to directly benefit from functional programming techniques across their whole application, in a way that’s highly accessible to the whole team and new hires.

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 would like to apply functional programming to any code base, on any problem, without type classes or jargon.

Prerequisites

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

Topics

  • Functional domain modeling
  • The essence of composability
  • Measuring the orthogonality of operators
  • Achieving both minimalism and expressiveness
  • Using types to enforce business constraints
  • Generalized algebraic data types for advanced modeling
  • Principle of least power applied to functional design
  • Design techniques used in the ZIO library and broader ecosystem
  • Functional approaches to internal domain-specific languages
  • Translating between different domain-specific languages
TESTIMONIAL
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