더북(TheBook)

연습문제 3-8

인자를 두 개 받는 fun 함수를 작성하라. 이 함수의 두 번째 인자는 인자를 두 개 받는 커리한 함수이고, 첫 번째 인자의 타입은 두 번째 인자(함수 값)의 두 번째 인자와 같은 타입이다. 이 함수는 두 번째 인자(함수 값)의 두 번째 인자에 첫 번째 인자(값)을 적용한 결과(함수 값)를 돌려준다.

해법

연습문제 3-7에서 만든 함수의 시그니처를 감안할 때 새 함수의 시그니처는 다음과 같다.

fun <A, B, C> partialB(b: B, f: (A) -> (B) -> C): (A) -> C

연습문제 3-7보다 약간 더 어렵다. 하지만 타입을 주의 깊게 고려한다면 쉽다. 항상 타입을 믿어야 한다는 점을 기억하라! 타입이 항상 직접 해법을 주지는 않지만 해법으로 이끌어 주기는 한다. 이 함수는 가능한 구현이 하나뿐이다. 따라서 컴파일되는 구현을 찾기만 하면 그 답이 올바르다고 확신할 수 있다!

여러분이 아는 내용은 A에서 C로 가는 함수를 반환해야 한다는 것뿐이다. 따라서 다음과 같이 구현을 시작하면 된다.

fun <A, B, C> partialB(b: B, f: (A) -> (B) -> C): (A) -> C =
    { a: A ->
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.