[kotlin] 코틀린에서의 부분 함수와 커링

함수형 프로그래밍은 함수를 다루는 것을 중점으로 한 패러다임으로, 부분 함수(partial function)와 커링(currying)은 중요한 개념입니다. 코틀린은 이러한 함수형 프로그래밍을 지원하며, 부분 함수와 커링을 사용하여 코드를 간결하게 작성할 수 있습니다.

부분 함수 (Partial Function)

부분 함수는 함수의 일부 파라미터만을 이용하여 새로운 함수를 생성하는 기법입니다. 코틀린에서는 partial 함수를 이용하여 부분 함수를 생성할 수 있습니다.

예를 들어, add 함수가 있다고 가정해봅시다.

fun add(a: Int, b: Int, c: Int): Int {
    return a + b + c
}

이제 add 함수의 일부 파라미터를 고정하여 새로운 함수를 생성해보겠습니다.

val add5 = ::add.partial(5) // b=5, c=5인 새로운 함수 생성
val result = add5(3, 2) // 결과: 10

::add.partial(5)를 통해 bc 파라미터를 5로 고정하여 새로운 함수 add5를 생성하였습니다.

커링 (Currying)

커링은 여러 개의 파라미터를 가진 함수를 한 개의 파라미터를 가진 여러 개의 함수들로 변환하는 기법입니다. 코틀린에서는 curried() 함수를 이용하여 커링을 할 수 있습니다.

예를 들어, 다음과 같은 add 함수가 있다고 가정해봅시다.

fun add(a: Int, b: Int, c: Int): Int {
    return a + b + c
}

여기서 add 함수를 커링하여 새로운 함수를 생성해보겠습니다.

val curriedAdd = ::add.curried()
val result = curriedAdd(5)(3)(2) // 결과: 10

::add.curried()를 통해 add 함수를 커링하여 curriedAdd 함수를 생성하였습니다. 이후에는 각 파라미터를 개별적으로 호출하여 사용할 수 있습니다.

함수형 프로그래밍을 위한 부분 함수와 커링은 코드의 재사용성과 가독성을 높여주는 중요한 개념입니다. 코틀린에서 이러한 기법을 적절히 활용하여 더욱 간결하고 유지보수가 용이한 코드를 작성할 수 있습니다.

참고 자료