Co ciekawsze, że cokolwiek innego (ale z oczekiwaniem, że może to być czasami przydatna sztuczka do dostrajania wydajności), możliwe jest użycie makr Clojure do "wstawiania" istniejącej funkcji?Podpisywanie funkcji za pomocą makr Clojure
tj Chciałbym móc zrobić coś takiego:
(defn my-function [a b] (+ a b))
(defn add-3-numbers [a b c]
(inline (my-function
a
(inline (my-function
b
c)))))
i mieć go produkować (w czasie kompilacji) dokładnie taką samą funkcję, jak gdybym inlined dodatki siebie, takich jak:
(defn add-3-numbers [a b c]
(+ a (+ b c)))
Czy przyjrzeliśmy się funkcji 'zastosuj'? http://clojuredocs.org/clojure_core/clojure.core/apply – edbond
stosuje się dynamicznie w środowisku wykonawczym, szukam czegoś, co wykonuje inlining w czasie kompilacji ... – mikera
'(read-string (clojure.repl/source-fn \ "my-function))' wydaje się być dobrym punktem wyjścia! – vemv