我知道我可以从 var 的元数据中获取:line
and ;:file
但是,我正在构建一个系统,用户可以在其中向我传递原始地图,并且稍后我将最终将数据“链接”在一起。当此链接失败时,我想报告他们指定地图的文件/行。例如:
(defn generate-stuff []
(make-thing { :k (make-thing { :k v }) }))
(link (generate-stuff) (other-generator))
;; outputs file/line of the map containing the errant :k/v pair
我假设编写一个宏来将文件/行与集合的元数据相关联几乎可以肯定是要走的路,但由于没有任何“var”可供查看,我不确定从哪里获得行号。我看到了 get-line-number 的定义,但它需要一个阅读器,虽然我可以找到所有特殊阅读器和 *default-data-reader-fn*
数据阅读器(为零),但我似乎无法弄清楚如何访问“代码”读者。