如何列出命名空间的function?
我想知道如何列出一个Clojure命名空间的所有function。 我做了一些研究,但我还没有。 我已经find了如何使用show方法列出Java类的方法:
(show java.awt.Graphics) 为了列出Clojure命名空间的function,我尝试了如下的show方法:
 (show 'clojure.contrib.repl-utils) 
 这显示了一些Java类的方法,但不是我正在寻找像doc和show 。 我怎样才能得到这些? 
我通常打电话
 (keys (ns-publics 'foo)) 
 列出名字空间foo输出的foo ; 例如为clojure.contrib.monads这返回 
 (defmonad censor m-when-not m+write+m maybe-m maybe-t ...) 
  ( ...代表更多)。 
 更一般地说,有一堆名字以ns-开头的函数,这些函数按名称空间列出了Vars,附加了一些额外的标准: 
- 
ns-map是所有的最普遍的函数,返回由符号(实际上是非名称空间限定的符号)的映射,其中与每个符号对应的值是符号在给定名称空间中parsing的Var或类。
- 
ns-interns– 像ns-map,但只包含在给定的命名空间中实现的variables(与来自其他命名空间的Vars相比,由于use或refer调用或者从clojure.core隐式引用Varsclojure.core。
- 
ns-publics– 像ns-interns,但只包含非私有的variables。
- 
ns-imports– 像ns-map,但只包含其值与Java类相对应的条目。
 另外还有ns-aliases ,它列出了当引用其他命名空间的Vars时可以用作速记别名的符号; 例如,如果你调用(require '[clojure.contrib.math :as math]) , ns-aliases将包含一个math键(符号)的入口,其值将是实际的名字空间clojure.contrib.math 。 这些映射不包含在由ns-map返回ns-map 。 
你可以使用dir 。 (也许这个问题首先被问到时是不可用的。)
 user=> (dir clojure.string) blank? capitalize escape join lower-case re-quote-replacement replace replace-first reverse split split-lines trim trim-newline triml trimr upper-case nil 
看看这里 。 进一步来说:
 ;; Sometimes I like to ask which public functions a namespace provides. (defn- ns-publics-list [ns] (#(list (ns-name %) (map first (ns-publics %))) ns)) 
对于那些使用逆时针的人来说,有一个默认显示的“命名空间浏览器”。
如果不可见,可以通过菜单选项显示:
窗口>显示视图>命名空间浏览器
官方文档: http : //doc.ccw-ide.org/documentation.html#_namespace_browser_view
摘自官方文件:
名称空间浏览器视图显示活动REPL的所有名称空间的所有符号[2]。 它允许您跳转到相关文件(包括内部jar)中符号的定义:只需双击名称空间浏览器视图中的符号名称即可。