Domain-driven design in functional programming
thoughtworks.com