Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F#

312 pages

Published Feb. 4, 2018 by Pragmatic Bookshelf.

ISBN:
978-1-68050-254-1
Copied ISBN!

View on OpenLibrary

4 stars (3 reviews)

You want increased customer satisfaction, faster development cycles, and less wasted work. Domain-driven design (DDD) combined with functional programming is the innovative combo that will get you there. In this pragmatic, down-to-earth guide, you'll see how applying the core principles of functional programming can result in software designs that model real-world requirements both elegantly and concisely - often more so than an object-oriented approach. Practical examples in the open-source F# functional language, and examples from familiar business domains, show you how to apply these techniques to build software that is business-focused, flexible, and high quality. Domain-driven design is a well-established approach to designing software that ensures that domain experts and developers work together effectively to create high-quality software. This book is the first to combine DDD with techniques from statically typed functional programming. This book is perfect for newcomers to DDD or functional programming - all the techniques you need …

1 edition

Review of 'Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F#' on 'Goodreads'

5 stars

This book walks you through the key concepts of Domain Driven Design in a practical and easy to grok manner. Examples are well crafted and do not require expertise of F# (I read it with a little knowledge of a similar language, Kotlin). It helped me learn the "why" behind functional patterns.

The journey starts with identifying the Vocabulary for a Domain (ubiquitous language) using Event Storming. Next modeling with Types is covered. Workflows are represented with Functions along with the Types. Second part covers implementation strategies - dependency injection, handling effects with railway oriented programming and so on.