[clojure] 클로저 커링을 사용한 데이터 조작 방법

클로저는 함수형 프로그래밍 언어로, 커링(currying)을 사용하여 데이터 조작을 간편하게 할 수 있습니다.

이번 글에서는 클로저에서 커링을 사용하여 데이터를 조작하는 방법에 대해 살펴보겠습니다.

클로저 커링(Currying)이란?

클로저의 커링은 여러 개의 인자를 받는 함수를 하나의 인자를 받는 함수들의 연속으로 변환하는 기법입니다. 커링을 사용하면 함수를 부분적으로 적용하여 더 유연하게 활용할 수 있습니다.

예를 들어, 다음과 같이 두 개의 숫자를 더하는 함수를 커링을 사용하여 변환할 수 있습니다.

(defn add [x y] (+ x y))
(def add-curried (partial add 2))
(println (add-curried 3))  ; 5 출력

위 예제에서 add 함수를 partial 함수를 사용하여 2개의 인자를 받던 함수를 1개의 인자를 받는 add-curried 함수로 변환했습니다.

클로저 커링을 사용한 데이터 조작

클로저에서 커링을 사용하여 데이터를 조작하는 예시를 살펴보겠습니다.

컬렉션 필터링

컬렉션의 요소 중에서 특정 조건을 만족하는 요소들만을 골라내는 작업은 커링을 사용하여 아래와 같이 쉽게 할 수 있습니다.

(defn filter-by-threshold [threshold data]
  (filter #(> % threshold) data))

(def filter-greater-than-5 (partial filter-by-threshold 5))
(println (filter-greater-than-5 [1 6 3 8 2]))  ; (6 8) 출력

위 예제에서 filter-by-threshold 함수를 커링을 사용하여 filter-greater-than-5 함수로 변환하고, 이 함수를 이용하여 임계값보다 큰 숫자들만을 골라냈습니다.

데이터 변환

데이터 변환 작업도 커링을 사용하여 더 깔끔하게 표현할 수 있습니다.

(defn multiply-by [value data]
  (map #(* value %) data))

(def multiply-by-3 (partial multiply-by 3))
(println (multiply-by-3 [1 2 3]))  ; (3 6 9) 출력

위 예제에서는 multiply-by 함수를 커링하여 multiply-by-3 함수로 만들었고, 이 함수를 이용하여 입력된 데이터를 3으로 곱한 결과를 얻었습니다.

마무리

클로저에서 커링을 사용하면 데이터 조작을 더 효율적으로 할 수 있습니다. 커링을 적절히 활용하여 함수를 재활용할 수 있고, 코드의 가독성도 향상시킬 수 있습니다.

커링은 함수형 프로그래밍의 핵심 기법 중 하나이므로, 클로저를 사용하는 개발자라면 커링에 대해 꼭 알아두는 것이 좋습니다.

참고 문헌: Clojure 커링, 커링 (위키백과)

TOC

  1. 클로저 커링(Currying)이란?
  2. 클로저 커링을 사용한 데이터 조작
  3. 마무리