clojure如何在评估的defn的元数据中添加行号?

时间:2013-08-09 12:21:59

标签: clojure

我一直在使用meta函数,只是为了好玩,我在函数定义周围放了一个元数据并在emacs中对它进行评估......我得到了这个输出:

(meta  (defn has-signal [sigtype]
         (fn [ex]
           (-> ex ex-data :ribol.core/signal (= sigtype)))))

=> {:ns #<Namespace ribol.test-ribol>, :name has-signal, 
    :arglists ([sigtype]), :column 8, :line 1, :file "NO_SOURCE_PATH"}

这是怎么回事? clojure如何知道函数所在的行号和命名空间?

1 个答案:

答案 0 :(得分:0)

编译器知道这个代码被证明了。这与堆栈跟踪的工作方式相同。

如果你在repl中评估,那么这个信息就会丢失(NO_SOURCE_PATH),这很痛苦。