더북(TheBook)

이제 이 두 함수를 커링한 버전을 생각해 보자.

f(rate)(price)
g(price)(rate)

이미 fg가 함수임을 알고 있다. 하지만 f(rate)g(price)는 무엇일까? 그렇다. 당연히 이들은 frate를 적용한 결과와 gprice를 적용한 결과다. 이들의 타입은 무엇일까?

f(rate)rate라는 세율로 고정된 경우 인자로 받은 가격에 대한 거래세를 알려주는 함수다. rate = 9라면 이 함수는 9%의 세율을 가격에 곱한 새로운 금액을 돌려준다. 이렇게 만든 함수를 apply9percentTax(price)라고 부를 수도 있다. 그리고 세율이 자주 바뀌지는 않으니까 이런 함수는 유용하다.

반면 g(price)price로 고정된 가격에 인자로 받은 세율을 적용한 최종 금액을 돌려주는 함수다. 가격이 100원이라면 이 함수는 100원에 여러 세율을 적용한 결과를 알려준다. 여러분이 풀려는 문제가 어떤 것인가에 따라 유용성이 달라지기는 하겠지만, 이런 함수는 그리 쓸모 있어 보이지 않는다. 여러분이 풀려는 문제가 정해진 금액이 여러 세율에 따라 어떻게 달라지는지 알아내는 것이라면 이 버전이 더 유용하다.

f(rate, price)g(price, rate) 같은 형태와 대비해 f(rate)g(rate) 같은 형태의 함수를 때로는 부분 적용 함수(partially applied function)라고 부른다. 함수 인자를 평가할 때 부분 적용 함수가 큰 역할을 한다. 3.2.4절에서 이 주제를 다시 다룬다.

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