Отказ от ответственности: У меня есть только смутные знания о дизайне, управляемом предметной областью, поэтому в ответе могут не использоваться правильные термины, и он может быть чрезмерно сосредоточен на коде, а не на общих понятиях, но вот некоторые мысли все равно ...
Внимание к области , а не к разработке конкретных функций или объектов для их реализации, кажется очень естественным для того, как люди используют функциональные языки программирования в целом. Очень часто (по крайней мере, в части функционального приложения) вы начинаете с разработки структуры данных, которая описывает (или моделирует) мир, с которым вы работаете. Структура данных отделена от реализации, поэтому она хорошо моделирует домен.
Очень хороший пример описан в статье о составлении финансовых контрактов . Примером является приложение для оценки (и другой обработки) финансовых контрактов. Самое главное, чтобы создать модель контрактов - что они на самом деле? Чтобы ответить на это, авторы проектируют структуру данных для описания контрактов. Что-то вроде:
type Contract =
| Zero // No trades
| Single of string * float // Single trade (buy something for some price)
| And of Contract * Contract // Combine two contracts
| Until of Contract * DateTime // Contract that can be executed only until...
// (...)
Есть несколько других случаев, но структура данных очень проста и моделирует широкий спектр довольно сложных контрактов, которые используются в финансовой индустрии.
Резюме Я думаю, что фокус на структурах данных, которые используются для моделирования мира (и отделены от реализации, которая их использует), очень близок к ключевым концепциям DDD.