더북(TheBook)

3.6.2 함수형 인터페이스 선택


함수형 프로그래밍 언어는 대부분 함수 타입이 구조적(structural)5이다. 문자열 두 개를 정수로 대응시키는 함수를 만들 때는 Function2<String, String, Integer> 또는 (String, String) -> int 형태의 타입을 사용한다. 하지만 자바에서는 Comparator<String> 같은 함수형 인터페이스로 함수 의도를 선언한다. 프로그래밍 언어 이론에서는 이 방식을 명목적 타입 지정(nominal typing)이라고 한다.

물론 특정한 의미 없이 ‘어떤 함수든’ 받고 싶은 상황도 많다. 이것에 대비한 제네릭 함수 타입(표 3-1 참고)이 있으니 가능하면 이 중 하나를 사용하면 좋다.


5 언어의 타입 시스템에서 타입을 구조로 구분한다는 의미다. 이는 타입을 이름으로 구분하는 명목적 타입 지정과 대조를 이룬다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.