[kotlin] 코틀린에서의 함수 합성과 파이프라인

함수형 프로그래밍은 함수 합성파이프라인과 같은 개념을 중심으로 이루어집니다. 코틀린에서도 함수 합성과 파이프라인을 사용하여 코드를 조직하고 간결하게 작성할 수 있습니다.

함수 합성

함수 합성은 다른 함수들을 조합해서 새로운 함수를 만드는 것을 의미합니다. 코틀린에서는 andThen 함수를 사용하여 함수 합성을 할 수 있습니다.

아래는 andThen 함수를 사용하여 두 개의 함수를 합성하는 예제입니다.

val add2: (Int) -> Int = { it + 2 }
val multiplyBy3: (Int) -> Int = { it * 3 }

val add2AndMultiplyBy3 = add2.andThen(multiplyBy3)
println(add2AndMultiplyBy3(5)) // 21

위 예제에서 add2 함수와 multiplyBy3 함수를 andThen 함수를 사용하여 합성하여 add2AndMultiplyBy3 함수를 만들었습니다.

파이프라인

파이프라인은 데이터 처리를 순차적으로 연결된 함수 호출로 정의하는 것을 의미합니다. 코틀린에서는 invoke 연산자를 사용하여 파이프라인을 구현할 수 있습니다.

아래는 파이프라인을 사용하여 데이터를 처리하는 예제입니다.

data class Person(val name: String, val age: Int, val city: String)

val people = listOf(
    Person("Alice", 25, "New York"),
    Person("Bob", 30, "San Francisco"),
    Person("Charlie", 35, "Seattle")
)

fun filterByAgeLessThan(age: Int) = { person: Person -> person.age < age }
fun mapToName(person: Person) = person.name

val result = people
    .filter(filterByAgeLessThan(30))
    .map(::mapToName)

println(result) // [Alice, Bob]

위 예제에서 filterByAgeLessThan 함수와 mapToName 함수를 사용하여 파이프라인을 만들어 people 리스트를 처리하였습니다.

함수 합성과 파이프라인은 코드를 더 모듈화하고 가독성을 향상시키는데 도움이 됩니다. 코틀린에서 이러한 함수형 프로그래밍의 개념을 활용하여 코드를 작성하면 유연하고 간결한 코드를 작성할 수 있습니다.

참고 자료