Я пытаюсь добавить параметр "сообщение" к макросу времени Clojure. В основном я хочу добавить необязательное настраиваемое сообщение к выводу времени. Я пытаюсь найти узкое место в своей программе, и мне было бы очень полезно прикрепить некоторые описательные сообщения к выходным данным времени.
Я пробовал следующее:
;optional argument
(defmacro time
"Evaluates expr and prints the time it took. Returns the value of
expr."
{:added "1.0"}
[expr & msg]
`(let [start# (. System (nanoTime))
ret# ~expr]
(prn (str "Elapsed time: " (/ (double (- (. System (nanoTime)) start#)) 1000000.0) " msecs. " (first ~msg)))
ret#))
и
(defmacro time
"Evaluates expr and prints the time it took. Returns the value of
expr."
{:added "1.0"}
([expr] (time expr ""))
([expr msg]
`(let [start# (. System (nanoTime))
ret# ~expr]
(prn (str "Elapsed time: " (/ (double (- (. System (nanoTime)) start#)) 1000000.0) " msecs. " ~msg))
ret#)))
Оба вызывают исключения. Как мне это сделать?