댓글로 제네릭= FP다라고 하는데


OOP와 FP가 직교지만 배타적인 개념이 아니듯이


제네릭또한 상호 보완적이지만 FP가 아니다


어째서 다른가?


함수형 프로그래밍은 기본적으로 I/O를 입력->출력 맵핑 처리다.


보통 우리가 흔히쓰는 I/O는


프로그램 바깥 상태에 따라 출력이 따라지지만


함수형은 기본적으로 동일,입력 동일 처리가 맞음. I/O는 따지고보면 인풋 아웃풋인데, 항상 인풋이 같다고 동일한 상태를 보장하진 않음


근데 함수는 걍 존나 똑같은 입력 똑같은 처리를 기본 베이스로 하는거


모나드, 액터 모델 이런것들이 그걸 뒤받침하기 위한 결과물이라고 볼수있지


그래서 함수형을 정의내릴때


순수함수,고차함수,데이터 불변성,함수 조합,재귀를 예시로 듬


그럼 제네릭은 무엇인가?


템플릿화다. 템플릿 화란 무엇인가? 재사용 가능한 알고리즘 구조, 데이터 구조의 재작성이다.


따라서


타입 추상화,재사용성, 컴파일 타임 안전성이 주요목적이다.


제네릭은 타입 독립적이 목표고


FP는 사이드 이펙트가 없는 걸 목표로 한다


목표점이 다르고, 프로그래밍의 예측가능성을 주안으로 둔 함수형


타입에 초점을 둔 제네릭.


둘은 상호보완적이지만 엄연히 다르고, 제네릭 프로그래밍처럼 오히려 타입 추상화가 될 경우 반대로 말하자면


예측 가능성이 낮아진다. 그렇기때문에 목적이 다르다고 할 수 있다.