Trong một bài đăng trên blog về F # cho vui và lợi nhuận, nó viết:
Trong một thiết kế chức năng, điều rất quan trọng là tách hành vi khỏi dữ liệu. Các kiểu dữ liệu đơn giản và "ngu ngốc". Và sau đó riêng biệt, bạn có một số hàm hoạt động trên các loại dữ liệu đó.
Điều này trái ngược hoàn toàn với thiết kế hướng đối tượng, trong đó hành vi và dữ liệu được kết hợp. Rốt cuộc, đó chính xác là những gì một lớp học. Trong một thiết kế hướng đối tượng thực sự trong thực tế, bạn không nên có gì ngoài hành vi - dữ liệu là riêng tư và chỉ có thể được truy cập thông qua các phương thức.
Trên thực tế, tại OOD, việc không có đủ hành vi xung quanh một loại dữ liệu được coi là Điều xấu và thậm chí còn có một tên: " mô hình miền thiếu máu ".
Cho rằng trong C #, chúng tôi dường như tiếp tục vay mượn từ F # và cố gắng viết mã kiểu chức năng hơn; Tại sao chúng ta không mượn ý tưởng phân tách dữ liệu / hành vi và thậm chí coi nó là xấu? Có phải chỉ đơn giản là định nghĩa không phù hợp với OOP, hoặc có một lý do cụ thể nào đó là xấu trong C # mà vì một lý do nào đó không áp dụng trong F # (và trên thực tế, bị đảo ngược)?
(Lưu ý: Tôi đặc biệt quan tâm đến sự khác biệt trong C # / F # có thể thay đổi quan điểm về điều gì là tốt / xấu, thay vì các cá nhân có thể không đồng ý với ý kiến trong bài đăng trên blog).