Describing your program in terms of Algebraic Data Types is a natural way to reduce complexity and separate concerns. As programs grow, their algebras can become large and cumbersome. Breaking up the algebra into smaller components decreases complexity of the interpreters, and allows teams to manage their own algebras to better describe their domains.
In this talk, the speaker will:
Provide examples for designing a realistic microservice with Cats’ Free Monad
Destructure the service into component algebras, using Cats’ Coproduct