함수형 프로그래밍
시작
함수형 프로그래밍은 프로그래밍 패러다임 중 하나로 함수를 값처럼 다루는 프로그래밍 방식입니다. 함수형 프로그래밍은 다음과 같은 특징을 가진다. 요즘은 함수형 프로그래밍이 대세가 되어가고 있기에 꼭 알아두어야 할 필요가 있습니다.
본문
순수 함수
순수 함수란 함수의 결과가 오직 인자에만 의존하는 함수를 말합니다. 즉, 함수가 외부의 상태에 의존하지 않는 함수를 말합니다.
Java에서 순수 함수를 구현하는 방법은 다음과 같습니다.
Kotlin에서 순수 함수를 구현하는 방법은 다음과 같습니다.
불변성
불변성이란 데이터가 변경되지 않는 것을 말합니다.
Java에서 불변성을 구현하는 방법은 다음과 같습니다. Java 14부터 record
가 추가되어 불변성을 구현할 수 있습니다.
Kotlin에서 불변성을 구현하는 방법은 다음과 같습니다. Kotlin에서 data class
를 사용하여 불변성을 구현할 수 있습니다.
고차 함수
고차 함수란 함수를 인자로 받거나 함수를 반환하는 함수를 말합니다.
Java에서 고차 함수를 구현하는 방법은 다음과 같습니다.
Kotlin에서 고차 함수를 구현하는 방법은 다음과 같습니다.
재귀 함수
재귀 함수란 함수가 자기 자신을 호출하는 함수를 말합니다.
Java에서 재귀 함수를 구현하는 방법은 다음과 같습니다.
Kotlin에서 재귀 함수를 구현하는 방법은 다음과 같습니다.
클로저(Closure)
클로저란 함수가 자유 변수를 포함하는 함수를 말합니다. 즉 캡처
된 변수를 사용하는 함수를 말합니다.
Java에서 클로저를 구현하는 방법은 다음과 같습니다.
Kotlin에서 클로저를 구현하는 방법은 다음과 같습니다.
지연 평가 (Lazy Evaluation)
지연 평가란 필요할 때만 계산을 하는 방식을 말합니다. 즉, 계산 결과를 캐싱하지 않고 필요할 때마다 계산을 하는 방식을 말합니다.
Java에서 지연 평가를 구현하는 방법은 다음과 같습니다. Java에서 컬렉션 Stream API를 사용하여 지연 평가를 구현할 수 있습니다.
Kotlin에서 지연 평가를 구현하는 방법은 다음과 같습니다.
커링 (Currying)
커링이란 여러 개의 인자를 받는 함수를 하나의 인자를 받는 함수로 변환하는 방식을 말합니다.
Java에서 커링을 구현하는 방법은 다음과 같습니다.
Kotlin에서 커링을 구현하는 방법은 다음과 같습니다.
마무리
함수형 프로그래밍에 대해 간단히 알아보았습니다. 함수형 프로그래밍은 프로그래밍 패러다임 중 하나로 함수를 값처럼 다루는 프로그래밍 방식입니다. 함수형 프로그래밍은 순수 함수, 불변성, 고차 함수, 재귀 함수, 클로저, 지연 평가, 커링 등의 특징을 가지고 있습니다.