//명령형 프로그래밍의 예시
List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9,10);
int result = 0;
for(int n:list){
if(n%2==0){
result +=n;
}
}
System.out.println("result = " + result);
//출력
//result = 30
//선언형 프로그래밍의 예시
List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9,10);
int result = 0;
result = list.stream()
.filter(n-> n%2==0)
.mapToInt(Integer::intValue)
.sum();
System.out.println("result = " + result);
//출력
//result = 30
함수형 프로그래밍은 선언형 프로그래밍을 따르는 대표적인 프로그래밍 패러다임이다.
함수형 프로그래밍은 함수들의 집합으로 프로그램이 구성된다.
순수함수(Pure Function)
private String name = "chanyoun";
//Not Pure
public String greeting() {
return "Hello " + name;
}
//Pure function
public static String greeting(String name) {
return "Hello" + name;
}
name(입력)
에 대해 항상 같은 결과 "Hello" + name
를 가진다 따라서 참조 투명성의 특성을 가지며, 함수가 결과값 외 다른 상태를 변경시키지 않으므로 Side effect가 없다고 볼수있다.No Iterate
불변의 자료구조(Immutable)
일급 객체