如果我一直在Clojure REPL中玩耍(可能一直在尝试(assoc)、(seq)或(reduce)等操作,创建了一些临时的map),但想要打印出该会话中定义的变量列表,有没有办法可以做到这一点?类似于 (println def) 或者其他什么东西?
如果你在user
名称空间中,你可以使用(dir user)
。或者任何其他你感兴趣的命名空间。这将展示出所有已定义的def
事物。如果它不在那里(通常会自动在REPL中使用),你可以在clojure.repl/dir
找到它。
ns-interns
可以让你接近目标。
user=> (def x 1)
#'user/x
user=> (def y 2)
#'user/y
user=> (ns-interns *ns*)
{x #'user/x, y #'user/y}