프로그래밍
함수형 프로그래밍?
Dayzen
2018. 4. 23. 22:36
이번에 JPA를 공부하면서 Optional이라는 개념이 처음으로 알게 되어 꼬리를 물고 물고 들어니깐 함수형 프로그래밍이라는 개념이나왔습니다.
함수?
모든 함수는 두종류의 입력과 출력을 지니는데
보통 우리 개발자가 아는 함수는 무엇이있을까?
public int add (int x, int t) {...}
위와 같은 함수는 int형의 타입으로 x와 y를 받아온뒤 int형의 타입으로 데이터를 출력해줍니다.
그렇다면 두번째 종류의 함수는 무엇일까요?
public void createMessage() {
Message message = process.getProcess();
if(message != null){
convert(message)
}
}
이 함수는 Input도 Output또한 명시적으로는 존재하지 않지만 다른 객체나 활동에 대하여 의존성을 지니고 의존에 따라 하는 행동이 달라지기도 합니다.
결국 이 함수도 보이지않는 Input과 Output이 존재한다고 말할 수 있습니다.
순수함수?
모든 입력이 입력으로 입력되고 모든 출력이 선언된 함수를 순수 함수라고 부릅니다.
즉 숨겨진 Input이나 Output으로 이루어져 있지 않는 함수를 순수 함수라고 정의합니다.
함수형 프로그래밍?
함수형 프로그래밍이란 함수를 작성할때 순수함수를 작성하는 것을 말합니다.
즉 숨겨져있는 Input이나 Output를 최대한 줄여서 코드의 대부분이 명시적인 입력과 출력으로 이루어지게 프로그래밍을 하는것을 말합니다.