De onde veio e porque voltou?
Menos código
Higher order function
Pure function
Currying
Recursion
Map
List comprehension or for comprehension
Filter
Pattern Matching
Fold
Herança/Polimorfismo
Herança
Polimosfismo
Principais pontos do DDD
Alinhamento de código com Negócio
Favorece a reutilização
Diminui o Acoplamento
Independência de Tecnologia
In DDD, we don’t consider any databases.
DDD is all about the domain , not about the database, and Persistence
The domain layer is the heart of the software and this is where the
interesting stuff happens
DDD não é uma bala de prata para todo o desenvolvimento do aplicativo,
ele apenas ajuda a gerenciar a complexidade, quando a complexidade
vem do domínio.
Eric Evans
Tudo se resume à complexidade do comportamento em
seu sistema. Se você complicada e a cada mudança de
regras de negócios que envolvem a validação, cálculos, e
derivações ... você vai querer um modelo de objeto.
Martin Fowler
Layers
User interface
Responsável por apresentar informações ao usuário e interpretar os comandos do
usuário.
Coordena a atividade de aplicativos.
Aplication layer
Domain layer
Contém informações sobre o domínio do negócio.
Infrastructure layer
Esta camada atua como uma biblioteca de suporte para todas as outras camadas.
Ele fornece comunicação entre as camadas, implementa persistência para objetos
de negócios
Value Object != Entity
Você compra um livro para formar a biblioteca. Se você
perder esse livro e comprar outro e você não se importa
qual é qual, em seguida, o livro é um Value Object.
Mas se o livro que você compra é assinada pelo autor, e é
muito difícil substituí-lo. Você se preocupa com esse livro
específico, outra cópia simples não irá substituí-lo. Esse
livro é uma Entity.
F# / DDD
http://www.tryfsharp.org
http://fsharpforfunandprofit.com
Domain driven design com functional programing(f#)

Domain driven design com functional programing(f#)