我确信“内置”可能不是这里正确的术语,但我不确定这些叫做什么。
我今天在修复 clojail 的一个错误时遇到了这个问题。内置变量,特别是下面列举的没有来源链接的变量:
http://clojure.github.com/clojure/clojure.core-api.html, 即使是动态的,也没有:dynamic 元数据。这包括 \*in\*, \*out\*, 和 \*err\* 等等。这里有一些例子
user=> (meta #'*err*)
{:ns #<Namespace clojure.core>, :name *err*, :added "1.0", :doc "代表标准错误输出打印操作的一个 java.io.Writer 对象。\n\n 默认为 System/err,包裹在一个 PrintWriter 中"}
user=> (meta #'*in*)
{:ns #<Namespace clojure.core>, :name *in*, :added "1.0", :doc "代表标准输入读取操作的一个 java.io.Reader 对象。\n\n 默认为 System/in,包裹在一个 LineNumberingPushbackReader 中"}
user=> (meta #'*out*)
{:ns #<Namespace clojure.core>, :name *out*, :added "1.0", :doc "代表标准输出打印操作的一个 java.io.Writer 对象。\n\n 默认为 System/out,包裹在一个 OutputStreamWriter 中", :tag java.io.Writer}
user=> (meta #'*ns*)
{:ns #<Namespace clojure.core>, :name *ns*, :added "1.0", :doc "代表当前命名空间的一个 clojure.lang.Namespace 对象.", :tag clojure.lang.Namespace}