W poście na blogu na F # dla zabawy i zysku napisano:
W funkcjonalnym projekcie bardzo ważne jest oddzielenie zachowania od danych. Typy danych są proste i „głupie”. A następnie osobno masz wiele funkcji, które działają na te typy danych.
Jest to dokładne przeciwieństwo projektowania obiektowego, w którym zachowanie i dane mają być łączone. W końcu taka właśnie jest klasa. W naprawdę zorientowanym obiektowo projekcie nie powinieneś zachowywać się inaczej - dane są prywatne i można uzyskać do nich dostęp tylko metodami.
W rzeczywistości w przypadku OOD niewystarczające zachowanie wokół typu danych jest uważane za złą rzecz, a nawet ma nazwę: „ anemiczny model domeny ”.
Biorąc pod uwagę, że w C # wydaje się, że nadal pożyczamy od F # i staramy się pisać bardziej funkcjonalny kod; dlaczego nie zapożyczamy pomysłu oddzielenia danych / zachowania, a nawet uważamy to za złe? Czy to po prostu, że definicja nie jest zgodna z OOP, czy jest konkretny powód, że jest zły w C #, który z jakiegoś powodu nie ma zastosowania w F # (i w rzeczywistości jest odwrócony)?
(Uwaga: szczególnie interesują mnie różnice w C # / F #, które mogą zmienić opinię na temat tego, co jest dobre / złe, niż osoby, które mogą nie zgadzać się z którąkolwiek opinią w blogu).