Domain Modeling Made Functional - Scott Wlaschin - KanDDDinsky 2019
Why Hacker News recommends it
HN treats it as the canonical, approachable example of domain-driven design with types and 'make invalid states unrepresentable'.
What it is
Scott Wlaschin shows how statically typed functional languages, using F# examples, can model a business domain so that invalid states cannot be represented. The type system acts almost like an instant unit test at compile time.
Recommended by 3 HN commenters across 4 different months, 2020 to 2026.
What Hacker News said
Strong rec devmunchies · 2020-08 · on “Draft of OCaml Scientific Computing book”
I wouldn't say its unloved or on a side track, it's baked into .net as a first class citizen and has dedicated engineers at Microsoft working on it. When I started I was pleasantly surprised how easy it was to download .net core on a mac and not do anything else to use F#. Its less popular than C# so its there's not as much documentation from 3rd party sources, youtube videos, etc, but you can use any C# modules in F# so you'll get used to reading C# docs. I would highly recommend this overview of the .Net ecosystem: [LINK] I really like how it showed a preview of "modern C#" at 12:20 which is being influenced by F#. After that, this talk opened my eyes to the power of f# philosophy and type
Recommends Huggernaut · 2021-02 · on “Learn Functional Programming Visually”
For anyone looking for a smaller introduction to this book, the author Scott Wlaschin has a talk with the same name: [this video] It doesn't cover a lot of good topics in the book, but it might whet your appetite.
Recommends rapnie · 2025-09 · on “'Make invalid states unrepresentable' considered harmful”
I can recommend "Domain Modeling Made Functional" by Scott Wlaschin presented at KanDDDinsky 2019, that offers a very appealing example for making making invalid states unrepresentable. The example code is in F# but that is a perfect language to demonstrate the general idea. Best-practice I guess boils down to finding the right balance throughout the application design. [this video]
Recommends rapnie · 2026-02 · on “Parse, Don't Validate and Type-Driven Design in Rust”
You can also search for "make invalid states impossible/unrepresentable" [0] to find more info on related practices. See "domain modeling made functional" [0] as a nice example [0] [LINK] [1] [this video]