Clojure механизм выхода во время компиляции

Язык Forth предлагает "время компиляции" механизм escape, при котором код может быть выполнен немедленно, пока компилятор работает (не во время выполнения). Вы можете включать операторы печати, например, для отладки сложного синтаксиса или ошибок типа.)

Есть ли в Clojure что-нибудь подобное? Я получаю исключение IllegalArgumentException во время компиляции в одном из вызовов моей функции и хочу добавить оператор печати во время компиляции для определения типа аргумента ( (. GetClass) ).

Спасибо.

] ОБНОВЛЕНИЕ : Вот полный defn , который не дает компиляции:

(ns my.ns.name
  (:gen-class
   :main true)
  (:use
   [clojure.contrib.str-utils2 :only (join)])
  (:import
   [java.io PrintWriter]
   [java.net URL]
   [java.util.concurrent Executors]
   [java.util.jar Manifest]
   [org.apache.commons.cli CommandLine HelpFormatter Options Option ParseException PosixParser]))

(defn set-version
  "Set the version variable to the build number."
  []
  (def version
    (-> (str "jar:" (.. my.ns.name (getProtectionDomain)
                                   (getCodeSource)
                                   (getLocation))
                    "!/META-INF/MANIFEST.MF")
      (URL.)
      (.openStream)
      (Manifest.)
      (.. getMainAttributes)
      (.getValue "Build-number"))))

Этот defn работает:

(defn set-version
  "Set the version variable to the build number."
  []
  (println (str (.getClass my.ns.name)))
  (def version
    (-> (str "jar:" (-> my.ns.name (.getProtectionDomain)
                                   (.getCodeSource)
                                   (.getLocation))
                    "!/META-INF/MANIFEST.MF")
      (URL.)
      (.openStream)
      (Manifest.)
      (.. getMainAttributes)
      (.getValue "Build-number"))))
1
задан Ralph 22 October 2010 в 12:48
поделиться