더북(TheBook)

3.2.8 함수 합성

fun 함수는 쉽게 합성할 수 있다.

fun square(n: Int) = n * n

fun triple(n: Int) = n * 3

println(square(triple(2)))

36

하지만 이는 함수 합성이 아니다. 이 코드는 함수 적용을 합성한 것이다. 함수 합성은 함수에 대한 이항 연산이며, 이는 덧셈이 수에 대한 이항 연산인 것과 같다. 따라서 함수를 프로그램으로 합성하려면 다른 함수를 사용해야 한다.

 

연습문제 3-1

Int에서 Int로 가는 함수의 합성을 허용하는 compose 함수를 작성하라(fun을 사용해 정의하라).

Note≡

연습문제 바로 다음에 해법을 보여준다. 하지만 반드시 해법을 보지 않고 문제를 풀어봐야 한다. 해법 코드는 이 책의 깃허브에서도 볼 수 있다. 이 연습문제는 간단하지만 일부 연습문제는 꽤 어렵기 때문에 해법을 미리 보고 싶은 유혹을 참기 어려울 것이다. 하지만 답을 더 어렵게 찾을수록 더 많이 배울 수 있다는 사실을 기억하라.

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