你怎么知道在 clojure REPL 环境中加载了什么?
How do you know what has been loaded in a clojure REPL environment?
如果我有一个运行 REPL,我可以打印出所有已经定义的符号吗?有什么方法可以知道我正在使用的 REPL 中定义了什么?
为了能够知道在 REPL 的命名空间中定义了哪些符号,请使用以下代码:
(keys (ns-publics 'my-name-space))
这个答案来自这个 Whosebug post。
How to list the functions of a namespace?
使用下面的代码打印到字符串。
(pr-str (keys (ns-publics 'my-name-space)))
以下是 LightTable 屏幕截图形式的完整示例。
首先,您需要找到所有命名空间:
(all-ns)
然后,您必须决定要收集什么。例如,documentation on namespaces 列出了以下用于检查命名空间的函数:
例如,您可以像这样拥有所有实习生映射:
(reduce conj (map ns-interns (all-ns)))
还有 dir
宏,用于列出命名空间:
user=> (dir user)
nil
user=> (def x :a)
#'user/x
user=> (dir user)
x
nil
user=> (dir clojure.core)
*
*'
*1
*2
*3
*agent*...
如果我有一个运行 REPL,我可以打印出所有已经定义的符号吗?有什么方法可以知道我正在使用的 REPL 中定义了什么?
为了能够知道在 REPL 的命名空间中定义了哪些符号,请使用以下代码:
(keys (ns-publics 'my-name-space))
这个答案来自这个 Whosebug post。 How to list the functions of a namespace?
使用下面的代码打印到字符串。
(pr-str (keys (ns-publics 'my-name-space)))
以下是 LightTable 屏幕截图形式的完整示例。
首先,您需要找到所有命名空间:
(all-ns)
然后,您必须决定要收集什么。例如,documentation on namespaces 列出了以下用于检查命名空间的函数:
例如,您可以像这样拥有所有实习生映射:
(reduce conj (map ns-interns (all-ns)))
还有 dir
宏,用于列出命名空间:
user=> (dir user)
nil
user=> (def x :a)
#'user/x
user=> (dir user)
x
nil
user=> (dir clojure.core)
*
*'
*1
*2
*3
*agent*...