Monads are very useful for manipulating and chaining data transformations using implicit configurations or explicit models. However, they are restricted to a single morphism T => U
type. More complex and flexible workflows require weaving transformations of different types using a generic factory pattern.
Traditional factory patterns rely on a combination of composition and inheritance and do not provide developers with the same level of flexibility as stackable traits.
In this section, we introduce you to the concept of modeling using mixins and a variant of the cake pattern to provide a workflow with three degrees of configurability.