如果我有一个正在运行的REPL,我可以打印出已定义的所有符号吗?有没有办法知道我在REPL中定义的内容?
答案 0 :(得分:1)
为了能够知道REPL中命名空间中定义的符号,请使用以下代码:
(keys (ns-publics 'my-name-space))
此回答来自此Stackoverflow帖子。 How to list the functions of a namespace?
使用以下代码打印到字符串。
(pr-str (keys (ns-publics 'my-name-space)))
以下是LightTable截图形式的完整示例。
答案 1 :(得分:0)
首先,您需要找到所有名称空间:
(all-ns)
然后,您必须决定要收集的内容。例如,documentation on namespaces列出了以下用于检查命名空间的函数:
例如,您可以拥有这样的所有实习生映射:
(reduce conj (map ns-interns (all-ns)))
答案 2 :(得分:0)
还有dir
宏来列出命名空间:
user=> (dir user)
nil
user=> (def x :a)
#'user/x
user=> (dir user)
x
nil
user=> (dir clojure.core)
*
*'
*1
*2
*3
*agent*...