더북(TheBook)

여기서 aA 타입의 변수다. 화살표 다음에는 함수 fa, b 변수를 조합한 식을 넣어야만 한다. 그리고 그 식은 C 타입이 되어야 한다. 함수 f의 타입은 (A) -> (B) -> C이므로 먼저 fA 타입의 값 a를 적용하는 것부터 시작하면 다음과 같다.

fun <A, B, C> partialB(b: B, f: (A) -> (B) -> C): (A) -> C =
    { a: A ->
        f(a)
    }

f(a)B에서 C로 가는 함수를 만든다. C 타입이 필요하고, f(a)B 타입의 값을 가지고 있다. 따라서 다시 이 함수에 B 타입의 값을 적용해야 한다는 사실은 너무나 당연하다.

fun <A, B, C> partialB(b: B, f: (A) -> (B) -> C): (A) -> C =
    { a: A ->
        f(a)(b)
    }

이게 전부다! 사실 타입을 따지는 것 외에 달리 해야 할 일이 없다.

앞에서 말한 것처럼 가장 중요한 사실은 함수의 커리한 버전을 사용한다는 점이다. 여러분은 커리한 함수를 사용하는 방법을 빠르게 배우게 될 것이다. 재사용할 수 있는 프로그램을 만들기 위해 추상화를 한계까지 밀어붙이는 과정에서 자주 수행해야 할 작업 하나는 튜플을 인자로 받는 함수를 커리한 함수로 바꾸는 것이다. 앞으로 보겠지만 이 과정은 아주 단순하다.

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