O uso de uma linguagem funcional pode ser usado como um método simples o suficiente para definição e discução de modelos de domínio (DDD). Este assunto foi abordado por Scott Wlaschin em um recente encontro do grupo Functional Londoners para falar sobre DDD com o uso da linguagem de programação funcional F# em aplicações do mundo real.
Scott é Arquiteto .NET e autor do livro Understanding Functional Programming e explica que a programação funcional pode parecer assustadora para desenvolvedores orientados a objetos por conta das palavras chave incomuns como Functor, Applicative, Monads, etc. Mas afirma que é apenas falta de prática em utilizá-las. Em contrapartida, a programação orientada a objetos é conceitualmente mais complexa, como por exemplo, os conceitos de herança, polimorfismo, a covariância e etc. Na opinião de Scott, a programação funcional é mais fácil por ter menos conceitos com que se preocupar, e para destacar isso, ele não utiliza nenhum desses conceitos em exemplos utilizados nas suas apresentações.
Muitos desenvolvedores acham que a programação funcional é apenas para resolver problemas em domínios matemáticos e científicos, porém não é adequado para aplicações do mundo real. Mas Scott acha que F# é muito bom para ser explorado em aplicações de negócio; é muito conciso e muito conveniente para sistemas que exigem precisão.
Quando compara F# e C# em um Modelo de Domínio, observando a estrutura do código, Scott argumenta que F# muitas vezes dá um código tão simples que este código pode ser usado em uma discução de modelo de domínio ao invés de usar diagramas UML ou outros modelos.
Scott explica que o sistema de tipos do F# além de servir como validador de tipos de dados, pode ser usado como uma ferramenta para representar o projeto de um Modelo de Domínio. Uma vez que o compilador faz a verificação do tipo, então, podemos considerar que é possível fazer testes unitário do modelo já em tempo de compilação.
Com um modelo bem tipado é possível fazer testes unitários já em tempo de compilação.
Scott conclui que F# é uma escolha segura e de baixo risco, para uma abordagem de desenvolvimento funcional. Seu principal argumento é de que esta linguagem tem o apoio e o suporte da Microsoft.