우선, 두 개념이 직교한다는 것은 무엇을 의미합니까?
이는 두 개념이 대조되는 아이디어가 없거나 서로 호환되지 않는다는 것을 의미합니다.
FP는 가능한 한 불변성과 순도를 권장합니다. OO는 상태와 돌연변이 (약간의 체계화 된 명령형 프로그래밍 버전)를 위해 만들어진 것 같습니다. 그리고 나는 객체가 변경 불가능하다는 것을 알고 있습니다. 그러나 OO는 나에게 상태 / 변경을 암시하는 것 같습니다.
그들은 반대처럼 보인다. 그것들이 직교성에 어떤 영향을 미칩니 까?
스칼라와 같은 언어를 사용하면 OO와 FP를 모두 쉽게 수행 할 수 있습니다. 이는 두 가지 방법의 직교성에 영향을 줍니까?
OO는 캡슐화, 객체 구성, 데이터 추상화, 서브 타이핑을 통한 다형성 및 필요한 경우 제어 된 돌연변이 에 관한 것입니다 (OO에서도 불변성이 권장됩니다). FP는 함수 구성, 제어 추상화 및 제한된 다형성 (일명 파라 메트릭 다형성)에 관한 것입니다. 따라서 두 가지 아이디어는 모순되지 않습니다. 두 언어 모두 서로 다른 종류의 능력과 추상화 메커니즘을 제공하며 한 언어로도 가능합니다. 사실, 이것은 스칼라 가 세워진 논문입니다 !
그의에서 스칼라 실험 OO 및 FP - - 구글 토크, 마틴 오더 스키는 아주 잘 그는 두 개념을 믿고 어떻게 설명 서로 직교 및 스칼라는 대중적으로 스칼라 커뮤니티에 알려진 새로운 패러다임으로 우아하고 완벽하게 두 패러다임을 통합하는 방법 객체 기능 패러다임. 당신을 위해 대화를 지켜봐야합니다. :-)
: 객체 함수형 언어의 다른 예 OCaml로 , F # , Nemerle .