Presentation: "Functional Domain Models - Declarative, Compositional and You get Some Parallelism for Free"

Time: Monday 12:05 - 13:05

Location: Salon C

Abstract:
In any application, the domain model is the essence of the business. As a designer we take a lot of pain to ensure that the domain model we design is pure and only bears the essential complexity that the domain embodies. A paradigm of programming that focuses explicitly on the purity and immutability of the model is one that should be the most natural fit when we think of complex domains. Functional programming encourages compositionality. Hence if we think of domain behaviors as pure functions then compositionality is the secret sauce that enables us to evolve larger models out of smaller ones.
 
In this talk I discuss simple functional abstractions like Applicative Functors, Semigroups and Monoids that help you compose larger domain models out of smaller ones. The main focus will be to demonstrate how we abstract away accidental complexity out of client APIs by using algebraic techniques at the implementation layer. This leads to declarative API design that expresses the domain logic clearly and succinctly.

Pure domain models have to be complemented with techniques of state and identity management in order to be usable in the real world. This talk will also touch upon techniques like Event Sourcing and CQRS (Command Query Responsibility Segregation) that plays along nicely with functional domain models. And last but not the least you get some parallelism for free.

Debasish Ghosh, Chief Technology Evangelist, Anshinsoft Author of "DSLs In Action"

 Debasish  Ghosh

Debasish Ghosh is the chief technology evangelist at Anshinsoft, where he specializes in leading delivery of enterprise-scale solutions for clients ranging from small to Fortune 500 companies. His research interests include functional programming, domain-specific languages, and NoSQL databases. Debasish is a senior member of the ACM and author of the book DSLs In Action, published by Manning in December 2010. You can read his programming blog Ruminations of a Programmer and contact him at dghosh@acm.org.