【发布时间】:2011-03-29 15:58:51
【问题描述】:
Clojure 有大量用于处理命名空间和 java 包导入的函数/宏。据我(有限)理解,命名空间的设置可以被视为 clojure 进程 (repl) 中的状态。
在 REPL 会话中迭代工作时,尤其是在(重新)加载源文件时,我会发现很容易混淆 - 通常是在命名空间配置中出现错误或语法错误时。其他时候,我想尝试重构命名空间/别名/引用过滤器,但如果不重新启动 REPL,就无法轻松退出现有的命名空间状态。
例如,我希望能够检查点命名空间配置 - 例如在 repl 加载主体代码之后 - 然后在尝试在 REPL 导入的一些库后返回到那个“干净的石板”,所以我可以立即测试一个源文件,该文件将该库中过滤的方法子集作为 ns 宏的一部分导入。
人们可以推荐保存和恢复命名空间配置的方法吗?
【问题讨论】:
-
这听起来像是许多 Common Lisp 实现所具备的 save-world 功能。
-
这应该是可能的,使用 (clojure.lang.Namespace/all) 和 .getMappings,但我找不到任何迹象表明有人已经这样做了。
标签: namespaces clojure state read-eval-print-loop