JAVA <FP & 람다 >

Zero·2022년 4월 2일
0

함수형 프로그래밍(FP: Functional Programming)

순수 함수를 조합하고 공유 상태, 변경 가능한 데이터 및 부작용을 피하는 기본 원칙에 따라 소프트웨어를 구성하는 프로그래밍 패러다임

1급 객체(First object , Firest class citizen)

  • 변수나 데이터 구조안에 넣을 수 있다
  • 파라미터로 전달할 수 있다.
  • 동적으로 프로퍼티 할당이 가능
  • 리턴값으로 사용할 수 있다

함수형 프로그래밍 조건

일반적으로 함수형 프로그래밍에서는 다음 세가지 조건을 만족시켜야 합니다

1) 순수 함수 (pure function)

같은 입력에 대해 항상 같은 출력을 반환하는 함수이다

  • 동일한 입력에 대해 항상 같은 값을 반환
  • 부작용이 없는 결과를 생성 -> 함수에서 인자를 변경하거나 프로그램의 상태를 변경 x

2) 고차 함수 (High Order Function)

1급 함수의 서브셋으로 다음 조건을 만족하는 함수

  • 함수의 인자로 함수를 전달할 수 있다
  • 함수의 리턴값으로 함수를 사용할 수 있다

3) 익명 함수 (Anonymous function)

이름이 없는 함수를 말하며 람다식으로 표현되는 함수 구현을 말한다

람다(Lamda)

기본적으로 함수의 구조로 되어 있으며 자바에서는 -> 와 같이 화살표 형태의 기호를 이용해 매개변수를 함수 바디로 전달하는 형태를 취한다

장점

  • 효율적인 람다 함수의 사용을 통해 불필요한 루프문의 삭제가 가능하며 , 함수의 재활용 용이
  • 필요한 정보만을 사용하는 방식을 통한 성능 향상
  • 일반적으로 다중 cpu를 활용하는 형태로 구현되어 병렬처리에 유리

단점

  • 이론상 단순하게 모든 원소를 전부 순회하는 경우 람다식이 조금 느릴 수 있음
  • 디버깅시 함수 콜스택 추적이 다소 어려움
  • 지나치게 남발하면 코드가 이해하기 어려워짐

0개의 댓글