Em um post no F # por diversão e lucro, ele diz:
Em um design funcional, é muito importante separar o comportamento dos dados. Os tipos de dados são simples e "burros". E então separadamente, você tem várias funções que atuam nesses tipos de dados.
Esse é exatamente o oposto de um design orientado a objetos, onde comportamento e dados devem ser combinados. Afinal, é exatamente isso que uma classe é. De fato, em um design realmente orientado a objetos, você deve ter apenas comportamento - os dados são privados e só podem ser acessados por métodos.
De fato, em OOD, não ter comportamento suficiente em torno de um tipo de dados é considerado uma Coisa Ruim e até tem um nome: o " modelo de domínio anêmico ".
Dado que, em C #, parecemos continuar pedindo emprestado ao F # e tentando escrever um código mais funcional; por que não emprestamos a idéia de separar dados / comportamento e até consideramos ruim? É simplesmente que a definição não combina com OOP, ou há uma razão concreta para que seja ruim em C # que por alguma razão não se aplique em F # (e, de fato, é revertida)?
(Observação: estou especificamente interessado nas diferenças em C # / F # que podem mudar a opinião do que é bom / ruim, em vez de indivíduos que podem discordar de qualquer opinião na publicação do blog).