[kotlin] 코틀린에서 람다식과 고차 함수를 사용하여 함수 합성(composition)을 구현하는 방법

함수 합성은 두 개 이상의 함수를 조합하여 새로운 함수를 만드는 방법을 말합니다. 코틀린에서는 람다식과 고차 함수를 사용하여 이러한 함수 합성을 구현할 수 있습니다.

람다식과 고차 함수

코틀린에서 람다식은 중괄호 {}로 둘러싸인 익명 함수로, 변수에 저장하거나 함수의 매개변수로 전달할 수 있습니다. 고차 함수는 함수를 매개변수로 받거나 함수를 반환하는 함수입니다. 이러한 개념을 활용하여 함수 합성을 구현할 수 있습니다.

함수 합성 구현하기

다음은 두 개의 함수를 합성하여 새로운 함수를 만드는 예제 코드입니다.

// 고차 함수를 사용하여 함수 합성하기
fun <T, U, V> compose(f: (U) -> V, g: (T) -> U): (T) -> V {
    return { x -> f(g(x)) }
}

// 합성할 함수들 정의
val add2: (Int) -> Int = { it + 2 }
val multiplyBy3: (Int) -> Int = { it * 3 }

// 함수 합성 적용
val add2AndMultiplyBy3 = compose(::multiplyBy3, ::add2)

// 결과 출력
println(add2AndMultiplyBy3(5)) // 출력: 21 (5에 2를 더하고 3을 곱한 결과)

위 코드에서 compose 함수는 두 개의 함수 fg를 받아 합성된 함수를 반환합니다. 그리고 add2AndMultiplyBy3add2multiplyBy3 함수를 합성하여 새로운 함수를 생성합니다.

이와 같이 코틀린에서는 람다식과 고차 함수를 이용하여 함수 합성을 쉽게 구현할 수 있습니다.

함수 합성에 대한 더 자세한 내용은 여기에서 확인할 수 있습니다.