我在想是否有办法读取任意Clojure代码,但又想忽略读-评估功能。也就是说,当*read-eval*为false时,不是抛出错误,而是忽略它。类似于以下内容:
(require '[clojure.tools.reader :as r])
(require '[clojure.tools.reader.reader-types :as t])
(binding [r/*ignore-read-eval* true]
(r/read (t/source-logging-push-back-reader "#=(+ 3 4)")))
=> (read-eval (+ 3 4))
我主要对元数据的列/行信息感兴趣,所以如果这超出了库的范围或还有更好的方法,请随意告诉我。如果需要,我也愿意做拉取请求。