더북(TheBook)

3.3.9 부분 적용 함수의 인자 뒤바꾸기

함수가 인자를 두 개 받는데 첫 번째 인자만 적용해 부분 적용 함수를 만들고 싶을 때가 있다. 예를 들어 다음 함수를 보자.

val addTax: (Double) -> (Double) -> Double =
    { x ->
        { y ->
            y + y / 100 * x
        }
    }

대부분은 먼저 세율을 적용해서 가격을 인자로 받는 함수를 얻을 것이다.

val add9percentTax: (Double) -> Double = addTax(9.0)

이 함수가 있으면 다음처럼 세금을 더한 가격을 알 수 있다.

val priceIncludingTax = add9percentTax(price);

좋다. 하지만 처음부터 함수가 다음과 같았다면 어떻게 해야 할까?

val addTax: (Double) -> (Double) -> Double =
    { x ->
        { y ->
            x + x / 100 * y
        }
    }

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