[clojure] 커링을 활용한 더 깔끔한 코드 작성

함수형 프로그래밍에서 커링은 인자를 나눠 받아 실행할 수 있게 하는 기법으로, 코드를 보다 깔끔하고 유연하게 작성할 수 있도록 도와줍니다. 이번 포스트에서는 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-5add-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-taxcalculate-withholding-tax는 각각 세금과 공제를 고정시킨 새로운 함수를 나타냅니다. 이렇게 하면 코드를 더 직관적으로 이해할 수 있기 때문에 유지 보수와 확장이 더욱 용이해집니다.

요약

커링은 Clojure에서 코드를 더 깔끔하게 작성하고, 유연하게 활용할 수 있도록 도와주는 강력한 기법입니다. 함수의 재사용성을 높이고, 코드의 가독성을 개선하기 위해 커링을 적극적으로 활용해보세요.

커링에 대해 더 알고 싶다면, ClojureDocs - partial를 참고해보세요.