In un post sul blog su F # per divertimento e profitto, si dice:
In un design funzionale, è molto importante separare il comportamento dai dati. I tipi di dati sono semplici e "stupidi". E poi separatamente, hai un numero di funzioni che agiscono su quei tipi di dati.
Questo è esattamente l'opposto di un design orientato agli oggetti, in cui comportamento e dati devono essere combinati. Dopo tutto, questo è esattamente ciò che è una classe. In una progettazione veramente orientata agli oggetti, infatti, non dovresti avere altro che un comportamento: i dati sono privati e sono accessibili solo tramite metodi.
Infatti, in OOD, non avere un comportamento sufficiente attorno a un tipo di dati è considerato una cosa negativa e ha persino un nome: il " modello di dominio anemico ".
Dato che in C # sembriamo continuare a prendere in prestito da F # e cercare di scrivere codice più funzionale; come mai non stiamo prendendo in prestito l'idea di separare dati / comportamento, e nemmeno lo consideriamo cattivo? È semplicemente che la definizione non coincide con OOP, o c'è una ragione concreta che è male in C # che per qualche motivo non si applica in F # (e in effetti, è invertito)?
(Nota: sono particolarmente interessato alle differenze in C # / F # che potrebbero cambiare l'opinione di ciò che è buono / cattivo, piuttosto che le persone che potrebbero non essere d'accordo con entrambe le opinioni nel post del blog).