Releasing the Gen monad

Some time ago I wrote a piece about generating randomized instances of domain objects for unit and integration testing using a functional approach. Looking back at my past projects, I almost always used this approach to simplify existing and newly written tests in the codebases that I was working on. Of course, the implementation matured over the years as well. What started off as a very simplistic @FunctionalInterface became a well-tested Java-based implementation of the Gen monad. Given that I use this small piece of code so often, I decided to release the Gen monad to the public.

more ...