더북(TheBook)

코틀린의 중위 호출(부록 B 중위 함수 참고) 형식을 사용하면 이 코드를 다음과 같이 좀 더 선언적인 스타일로 바꿀 수 있다.

val processFun = ::extractListData andThen
                 ::fetchListContent andThen
                 ::renderHtml andThen
                 ::createResponse

fun fetchList(request: Request): Response = processFun(request)

즉, f andThen gg(f())와 동일하다. 함수 타입을 정의할 때 다음과 같이 타입 별명을 사용하면 편리하다.

typealias FUN<A, B> = (A) -> B
infix fun <A, B, C> FUN<A, B>.andThen(other: FUN<B, C>): FUN<A, C>
        = TODO()

연습 문제를 풀려면 TODO() 호출 대신 함수 구현을 넣어야 한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.