The Free Monad with Multiple Algebras Posted 29 Mar 2017 by Danielle Ashley In this post I will look at the machinery that makes it possible to use Free with more than one algebra at once: Coproducts and the Inject type class. This technique was first described in the paper Data types à la carte, and Cats and other libraries provide implementations. However we’re going to build our own implementat