함수구문의 종류
함수의 종류(작성중)
일급 클래스 함수
- 일급 클래스 함수란? 컬랙션이 함수로 기능할 수 있지만 반대로 함수도 데이터로 기능할 수 있다.
- 자바는 모든 행위를 클래스의 인스턴스 또는 인스턴스에 덧붙여진 형태로 모델링됨
- 함수형에서는 소프트웨어 개발 문제에 대해 함수를 데이터에 적용하는 관점으로 인식
일급 클래스 함수
- 자바의 익명클래스로 이해하고자 하지 말것
- 다른 함수들과 합성(composition)의 예 ```clojure
(def fifth (comp first rest rest rest rest )) (fifth [1 2 3 4 5]) ;=> 5
한줄의 여러개의 괄호를 열게 되는 경우는 그리 많지 않치만 이런 경우 대부분 새로운 함수를 생성하고
리턴하여 바로 호출하려는 의도로 이해해야한다.
```clojure
(defn fnth [n]
(apply comp
(cons first (take (dec n) (repeat rest)))))
;=> e
(map (comp ;함수구성
keyword ;키워드생성
#(.toLowerCase %) ;소문자로 변환
name); 이름을 string으로 리턴
'(a B C)) ;합성한 함수를 심벌의 리스트에 맵핑
;=> (:a :b :c)
함수를 잘게 쪼개고 각 조각을 잘 정의하면 결합성(composablity)가 향상되고 결국 재사용성이 향상되는 결과를 얻을 수 있다.