라는건 사실 존재 하지 않는다. 근본 아이디어가 하나는 객체의 상태를 계속 바꾸면서 시스템을 바꾸는 것이고, 다른 하나는 객체를 계속 새로 찍어내면서 시스템을 바꾸는 것이기 때문이지

다만 OOP 에서 대중화된 개념 중 함수형에서 써도 되는 기능을 포함시키는 경우는 있다

이런 경우가 형이 볼때는 대략 크게 두가지
- 함수 이름을 여러 함수가 공유하는 제네릭 함수. 클로져네에선 멀티 메쏘드 기능
- 데이터 타입 정의시 다른 데이터 타입을 상속하는 기능. 클로저에서는 이게 안됨

그런 OOP에서 실용화된 개념은 함수형과도 호환이 되는거지

함수형의 가장 기본 아이디어는 상태 변경을 극도로 배제하고 전체 시스템을 구성하는 모든 구성체들은 매 순간 독립적인, 과거를 바탕으로 한 (이미 있는 것의 상태가 변하는게 아니라) 새로운 객체로써 시스템을 진화시킨다는 거지.

HW, GC, 병렬화 등의 향상과 클라우드 컴퓨팅으로 인한 상태가 없는 서버가 대중화 되면서 이게 쓸만해지게 된거고, 아직도 자원이 제한된 어플리케이션에 적용하기엔 타당성이 떨어지는게 사실임

형이 알기로 CLOS나 스킴에서의 구현은 엄밀한 의미에서 함수형이라고 볼수는 없다. 사실 스킴이나 커먼리스프는 함수형 프로그래밍을 강요하는 제한이 없고 함수형으로 프로그래밍 할수있는 충분한 기능만을 제공 한다 보면됨. 이런 이유는 과거에는 위에서 이미 말해준 바와 같이 순수 쪽에 가까운 함수형을 하기에는 기반기술이 미약했었기 때문이지
(스킴이나 커먼리스프는 다중 패러다임 언어라 부르기도 함. 언어 자체에 대한 프로그래밍이 가능하기 때문에 능력치에 따라 새로운 패러다임을 DSL로 찍어낼 수 있기 때문)

암튼, 함수형을 쓰면 최근 점점 더 복잡해지고 있는 개발 대상에 대해 문제를 프로그래머가 이해하기 쉬운  독립적 단위로 파악할 수 있게 해줌. 이런 면에서 프로그래머의 시간을 보다 효과적으로 쓸수 있는 함수형이 앞으로 더 널리 쓰일거라는 견해임.
(물론 임베디드 처럼 제한된 자원의 컴퓨팅이 존재하는 한 C 계열도 살아남을 수 밖에 없다)


한줄요약: 람다가 너를 자유케 하리라