더북(TheBook)

힌트

compose 함수는 (Int) -> Int 타입의 함수 두 개를 파라미터로 받아 똑같은 타입의 함수를 반환한다. compose 함수를 fun으로 정의할 수 있지만 함수의 파라미터는 값이어야만 한다. fun으로 정의한 myFunc라는 함수가 있으면 앞에 ::를 붙여서 함수 값으로 변환할 수 있다.

해법

다음은 람다를 사용하는 해법이다.

fun compose(f: (Int) -> Int, g: (Int) -> Int): (Int) -> Int = { x -> f(g(x)) }

또는 다음과 같이 이를 단순화시킬 수 있다.

fun compose(f: (Int) -> Int, g: (Int) -> Int): (Int) -> Int = { f(g(it)) }

이 함수를 사용해 squaretriple 함수를 합성할 수 있다.

val squareOfTriple = compose(::square, ::triple)

println(squareOfTriple(2))

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