[clojure] 커링된 함수를 사용한 데이터 구조 조작
커링은 함수형 프로그래밍에서 일반적으로 사용되는 개념으로, 여러 개의 파라미터를 가진 함수를 하나의 파라미터를 받는 함수들로 나누는 기법을 의미합니다. 이러한 기법은 코드의 모듈화와 재사용성을 증가시키는 데 도움이 됩니다. Clojure에서는 커링을 사용하여 데이터 구조를 조작하는데 매우 효과적으로 사용할 수 있습니다.
커링된 함수란?
커링된 함수는 원래 함수의 일부 파라미터를 고정한 새로운 함수를 만드는 기법입니다. Clojure에서는 partial
함수를 사용하여 커링된 함수를 생성할 수 있습니다. 예를 들어, 다음과 같이 add
함수를 커링하여 increment-by-5
함수를 만들 수 있습니다.
(def add (fn [a b] (+ a b)))
(def increment-by-5 (partial add 5))
위의 코드에서 increment-by-5
함수는 add
함수에 5
를 고정한 새로운 함수가 됩니다.
데이터 구조 조작 예시
커링을 사용하여 데이터 구조를 조작하는 예시를 살펴봅시다. Clojure의 map
과 filter
함수는 컬렉션을 처리하는데 매우 유용한 함수입니다. 다음은 커링된 함수를 사용하여 데이터를 조작하는 예시 코드입니다.
(def numbers (list 1 2 3 4 5))
(def add-10 (partial map #(+ 10 %)))
(def even? (partial filter #(= (mod % 2) 0)))
(def result (->> numbers
add-10
even?))
위의 코드에서 add-10
함수를 사용하여 리스트의 각 요소에 10
을 더하고, even?
함수를 사용하여 짝수인 요소만을 필터링합니다. ->>
매크로를 사용하여 데이터를 순차적으로 map
과 filter
함수에 전달하여 결과를 얻을 수 있습니다.
Clojure에서 커링된 함수를 사용하여 데이터 구조를 조작하는 방법에 대해 알아보았습니다. 이러한 기법을 활용하면 코드의 가독성과 유지보수성을 향상시킬 수 있습니다.