[JAVA8 포스팅 끝] 용어정리 및 키워드.
JAVA8 IN ACTION 의 포스팅은 끝났습니다.
이번 포스팅은 지식공유 보다는, 추 후 제가 함수형을 공부하기 위한 용어 및 키워드를 정리합니다.
- 일급함수
인수로 전달하거나, 결과로 반환하거나, 자료구조에 저장할 수 있는 함수를 말함.
즉 람다나 메소드 레퍼런스 등 값으로 가질 수 있는 함수를 일급함수라고 정의
- 고차원 함수
여러 함수들을 묶어, 새 기능을 만드는 것을 말함 (comparing, andThen, compose).
즉 람다 조합을 말함
- 커링
함수를 모듈화하는 기법, 함수를 완성시키지 않고 인수를 받아 계속 다른 함수를 만드는 기법이라고 할 수 있다.
예제
f(x, y, z) = x + y - z 를 다음과 같이 여러 형태로 변형 가능
g(x, y) = f(x, y, 2);
z(x) = f(x, 1, 3);
JAVA8 IN ACTION 에서는 변환요소, 기준치 조정 등을 위해 유용하다고 정리하고 있음
EX. swift 책에서는 커리함수를 파라미터를 받는 함수를 반환하는 함수라 기술.
아래는 커리함수에 대한 예제 (swift).
1 2 3 4 5 6 7 8 9 10 11 | func Test () -> (Int) -> String { return { (intValue : Int) -> String in return String(intValue) + " 함수 커링 샘플 제작" } } print(Test()(5)) // PRINT RESULT // 5 함수 커링 샘플 제작 | cs |
- 패턴매칭
if-then-else 등을 피하기 위해, 각 분기의 블록을 일급함수화 하여 입력받고, 분기 패턴에 따라 일치하는 일급함수를 실행(언랩)하는 것으로 보입니다.
조건부 연기를 생각하면 쉬울 듯합니다. (JAVA 에서는 아직 지원 안합니다.)
- 영속자료구조
자료구조의 형태는 함수형을 이용해 제작하고, 자료구조 내부를 바꾸지 말라는 원칙.
의도치 않은 사이드 이펙트를 발생시키고 싶지 않음 -> 참조투명성 원칙.
- 동시성 문제 해결
함수형을 사용하면, 동시성 문제를 해결할 수 있음 (참조투명성 원칙에 의해..)
아래 포스팅 참고.
작년 이 맘 때부터 시작했던 포스팅 했던 JAVA8 의 포스팅이 끝나서 보람이 있네요. :-)
물론 JAVA8 in Action 의 모든 내용을 전문적으로 알고 기억하는 것도 아니지만 나름 뿌듯합니다.
좋은 소식은 현재 직장에서 JDK 버전을 8 로 올려준다는 것입니다. (미래를 내다본 것은 아닌지..)
하지만 안드로이드 개발을 위해 RxJava 및 오픈소스를 계속해야할 것으로 보이고, 곧 새 포스팅할 주제인 IOS-swift 도 보면서 다양한 함수형을 지원하는 언어 활용에 익숙해져 봐야할 것 같습니다.
이상 올 해 목표 중 하나를 끝냅니다.
|
'개발이야기 > 함수형 방법론' 카테고리의 다른 글
JAVA8 에 추가된 새로운 날짜 & 시간 API. (1) | 2017.04.04 |
---|---|
CompleteableFuture 를 이용한 비동기 처리 조합 (0) | 2017.03.24 |
CompleteableFuture 를 이용한 비동기 처리 (0) | 2017.03.23 |
Null 대신 Optional! (0) | 2017.03.14 |
디폴트 메소드와 다중상속 (0) | 2017.03.13 |