본문 바로가기

모던자바인액션

[Part6] 함수형 프로그래밍과 자바 진화의 미래 (A)

1. 함수형 프로그래밍이란 ? (30점)

1) 함수/메서드가 수학의 함수처럼 동작한다.

2) 부작용없이 동작한다.

 

2. '같은 함수를 호출했을 때 항상 같은 결과를 반환한다'와 가장 깊은 연관성이 있는 단어는 ? (20점) 3

1) 콤비네이터 2) 커링 3) 참조투명성 4) 캐싱 5) 영속

- 커링: 함수를 모듈화하고, 재사용하는데 도움을 주는 기법. x와 y라는 두 인수를 받는 함수 f를 한개의 인수를 받는 g라는 함수로 대체하는 기법.

- 영속: 저장된 값이 다른 누군가에 의해 영향을 받지 않는 상태.

- 콤비네이터: 두 개 이상의 함수를 인수로 받아 다른 함수를 반환하는 메서드/함수.

 

3. 다음 중 잘못된 것은 ? (20점) 5

1) 자바 8이상은 일급함수를 지원한다. (O. p.586)

- 일급함수란 인수로 전달하거나, 결과로 반환하거나, 자료구조에 저장할 수 있는 함수다.

2) 함수를 인수로 받아 다른 함수로 반환하는 정적 메서드에는 Comparator.comparing이 있으며, 이는 함숫값을 활용하는 방법 중 하나이다. (O. p.586)

3) 자바 8의 함수들은 고차원 함수라고 할 수 있다. (O. p.587)

4) 스트림에 연산을 적용하면 연산이 수행되지 않고 일단 저장만 되며, 최종연상을 적용한 경우에만 실제 연산이 이루어진다. (O. p.600)

-최종연산의 예시: findFirst, skip 등.

5) 함수형 프로그래밍을 구분하는 중요한 특징 중 하나는 자바에서 지원하는 패턴매칭이 있다. (X. p.605)

- 패턴매칭은 자바에서 지원하지 않음. 스칼라 등에서 지원.

 

4. 자바 8, 9, 10의 변화를 각각 1가지씩 작성하시오. (30점)

- 자바8 : 동작파라미터화, 스트림, CompletableFuture클래스, Optional클래스, 디폴트메서드

- 자바9 : 모듈시스템, 플로API

- 자바10 : 지역변수형 추론기능( = 지역변수의 형식을 추론한다. var 키워드)