2024 Clojure状态调查!中分享您的想法。

欢迎!有关如何使用本网站的更多信息,请参阅关于页面。

0 投票
REPL

在#nrepl中提出了关于如何查看load-file所评估的所有内容的疑问。我的想法是启动一个带有自定义eval的子REPL,在那里加载文件,然后返回。令我惊讶的是,load-file没有使用REPL的eval,但我不确定这是否是我应该有的期望。

(clojure.main/repl
 :eval (fn [form]
         (prn "i could do something to: " form)
         (eval form))
 :read server/repl-read)

(load-file "stuff.clj")
"i could do something to: " (load-file "stuff.clj") ;; sees the load-file form
#'stuff/foo       ;; but not any of the forms in stuff.clj

我天真地期望能够获得加载文件中所有形式的代码,但这似乎并不成立。load-file应该使用当前REPL的eval函数吗?

1 答案

+2 投票

被选择
 
最佳答案

当前REPL的eval函数用于评估REPL读取的内容,而不是运行时中所有被评估的内容。因此,这不是你应该有的期望。

...