함수형 프로그래밍에서 커링은 인자를 나눠 받아 실행할 수 있게 하는 기법으로, 코드를 보다 깔끔하고 유연하게 작성할 수 있도록 도와줍니다. 이번 포스트에서는 Clojure에서 커링을 활용하여 보다 간결하고 이해하기 쉬운 코드를 작성하는 방법에 대해 살펴보겠습니다.
커링(Currying)이란?
커링은 여러 개의 인자를 받는 함수를 한 개의 인자를 받는 함수들의 연속으로 바꾸는 과정을 의미합니다. 이를 통해 함수의 재사용성과 코드의 가독성을 높일 수 있습니다. Clojure에서는 partial
함수를 사용하여 커링을 쉽게 구현할 수 있습니다.
예를 들어, 다음과 같이 add
함수를 커링하여 각각의 단일 인자를 받는 함수로 변환할 수 있습니다.
(defn add [x y] (+ x y))
(def add-5 (partial add 5))
(def add-10 (partial add 10))
(add-5 7) ; 12
(add-10 3) ; 13
위 예제에서 add-5
와 add-10
은 각각 add
함수의 첫 번째 인자를 고정시킨 새로운 함수를 나타냅니다. 이렇게 하면 add
함수를 커링하여 여러 상황에 유연하게 활용할 수 있습니다.
커링을 통한 코드의 가독성 개선
커링을 사용하면 코드를 더 간결하게 작성할 수 있고, 함수의 목적을 더 명확하게 전달할 수 있습니다.
예를 들어, 다음과 같이 복수의 인자를 받는 함수를 커링하여 각각의 단일 인자를 받는 함수들로 깔끔하게 표현할 수 있습니다.
(defn calculate-total [tax rate amount]
(* amount (+ 1 tax rate)))
(def calculate-tax (partial calculate-total 0.1))
(def calculate-withholding-tax (partial calculate-total 0.05))
(calculate-tax 1000) ; 1100.0
(calculate-withholding-tax 2000) ; 2100.0
위 예제에서 calculate-tax
와 calculate-withholding-tax
는 각각 세금과 공제를 고정시킨 새로운 함수를 나타냅니다. 이렇게 하면 코드를 더 직관적으로 이해할 수 있기 때문에 유지 보수와 확장이 더욱 용이해집니다.
요약
커링은 Clojure에서 코드를 더 깔끔하게 작성하고, 유연하게 활용할 수 있도록 도와주는 강력한 기법입니다. 함수의 재사용성을 높이고, 코드의 가독성을 개선하기 위해 커링을 적극적으로 활용해보세요.
커링에 대해 더 알고 싶다면, ClojureDocs - partial를 참고해보세요.