더북(TheBook)

이제 higherCompose를 사용해 triplesquare를 합성하면 된다.

val squareOfTriple = higherCompose()(square)(triple)

하지만 이 코드는 컴파일되지 않고 다음과 같은 오류가 난다.

Error:(79, 24) Kotlin: Type inference failed:
    Not enough information to infer parameter T in fun <T, U, V>
    higherCompose(): ((U) -> V) -> ((T) -> U) -> (T) -> V
Please specify it explicitly.

컴파일러가 T, U, V 타입 파라미터의 진짜 타입을 추론할 수 없다. 여러분이 T, U, V가 모두 Int이면 충분하다고 판단했다면 여러분은 코틀린보다 더 똑똑하다! 문제를 해결하는 방법은 컴파일러에게 T, U, V의 실제 타입을 넘겨주는 것이다. 함수 이름 뒤에 타입 정보를 넣으면 컴파일러에게 타입을 알려줄 수 있다.

val squareOfTriple = higherCompose<Int, Int, Int>()(square)(triple)
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.