본문 바로가기

함수형 자바

(11)
[JAVA] 함수형 인터페이스 변형 - Chapter 03 함수형 자바 프로그래밍 3장을 읽었다.주로 여기서는 함수형 인터페이스의 변형 혹은 합성을 통한 확장성을 다룬 것 같다. 먼저 대표적인 4가지 함수형 인터페이스를 살펴보자. 1) FunctionFunction 로 나타낼 수 있으며, T타입의 입력을 받아 R타입의 결과를 return하는 인터페이스이다. 2) ConsumerConsumer 로 나타낼 수 있으며, T타입의 입력을 받지만, return하는 것 없이, 말 그대로 소비하는 인터페이스이다.  3) SupplierSupplier 로 나타낼 수 있으며, 아무 입력을 받지 않고 T타입의 결과를 return하는 인터페이스이다.Consumer와 반대 개념이라 생각된다.지연 실행에 Supplier로 래핑한 후 get 메소드를 통해 호출 하는 식으로 사용된다 한다..
[JAVA] 자바 람다 (Lambda) 와 캡처 (Capture) - Chapter 02 함수형 자바 프로그래밍 챕터 2를 공부하였다.2장에서는 람다 표현식에 대해 다뤘다.그 중에서 람다에서 외부 변수를 사용 할 때의 특징을 좀 더 알아보았다. 람다 (Lambda)람다 표현식은 0개 이상의 매개변수를 갖고 값을 반환 할 수 있다. 먼저, 람다의 문법부터 살펴보면,() -> {} 형태로 이루어져 있다. 1) 여기서 매개 변수 (parameter) 들은 쉼표로 구분하며,메서드 인수와 다르게 타입을 추론 할 수 있는 경우에는 타입을 생략 할 수 있다.다만, 묵시적으로 타입 지정된 매개변수와 명시적으로 타입이 지정된 매개변수를 혼용하여 기재 할 수는 없다. 2) 매개변수와 람다의 바디는 화살표 (->) 로 이어져 있다. 3)한 줄로 표현된 경우에는 중괄호 생략이 가능하며, return없이 암시적으로..
[JAVA] 일급 함수, 고차 함수, 커링 함수 (Currying Function) 이해해 보기 - Chapter 01 함수형 자바 프로그래밍 1장을 읽으면서 커링 함수가 잘 이해가 안되어서 직접 이것저것 해보았다.커링 함수나 고차 함수의 예제들의 계시물은 JAVA로 구현한 것이 많이 없어 슬펐다... (대부분 Javascript였다...) 먼저 커링 함수 (Currying Function)에 들어가기 앞서서, 함수형 프로그래밍을 이해하기 위해 일급 함수와 고차 함수를 이해해 보자.일급 함수함수 자체를 다른 함수에 인수로 전달 하거나 반환값으로 사용될 수 있다.변수에 할당 할 수 있는 함수이다. 고차 함수함수를 인수로 받을 수 있다.함수를 반환 할 수 있다. 고차함수는 수학의 범함수와 느낌이 비슷하다고 한다. (함수를 입력받는 함수. 정의역이 함수집합, 공역이 실수나 복소수)예제에서 어떤게 일급함수이고 고차함수인지 구분해..