좋아, 나는 함수와 매크로를 모두 사용하는 방법을 잘 알고있다.매크로와 함수를 더 매끄럽게 만들기
내가 궁금한 점은 왜 두 가지를 통합 할 때 컴파일러가 더 영리하지 못하다는 것입니다. Clojure의 코드를 고려해
(defmacro wonky-add [a b] `(+ ~a (* 2 ~b)))
(defn wonky-increment [a] (apply wonky-add a 1))
=> Error: can't take value of a macro
예, 나는 "적용"복용하여이 작업을 할 수있어 -하지만 왜 컴파일러는이 자체 작업을 수행하는 방법을 알아낼 수 있다는 것입니다?
Clojure/다른 LISP에서 함수와 매크로 모두 매개 변수로 동등하게 잘 적용되는 적용 또는 다른 고차 함수 버전을 만들 수 있습니까?