我正在尝试使用Clojure doc函数获取文档,但无法从REPL获得文档(我使用的是Emacs和SLIME)。下面的序列描述了正在发生的事情(每一行后面紧跟错误消息):
gaidica.core> (doc first)
; Evaluation aborted.
Unable to resolve symbol: doc in this context
[Thrown class java.lang.Exception]
gaidica.core> (clojure.core/doc first)
; Evaluation aborted.
No such var:
考虑到有效的clojure表单:
> (let [a 16 b 8] (/ a b))
2
我正在尝试手动构建它,以便将其提供给eval调用。我很久以前就被repl拒绝了:
> (list 'let '[ 'a '16 'b '8 '] '(/ a b) )
RuntimeException Unmatched delimiter: ] clojure.lang.Util.runtimeException (Util.java:156)
(/ a b)
RuntimeException Unmatched d
如何以更好的性能评估AST?目前,我们将AST创建为树,其中叶节点(终端)是一个参数映射的函数-关键字及其值。终端用关键字表示,函数(非终端)可以是用户(或clojure)定义的函数。完全生长法从非终端和终端创建树:
(defn full-growth
"Creates individual by full growth method: root and intermediate nodes are
randomly selected from non-terminals Ns,
leaves at depth depth are randomly selected f
我从Clojure开始,这也是我的第一个lisp。显然有很多东西需要吸收,为了减轻认知负荷,我试图找到我可以安全地忽略的部分(目前)。
是否可以安全地处理具有宏的表单和具有内置的表单,或者是否存在以后会出现的陷阱?
换句话说,我是否会遇到这样一种情况:我需要知道(defn f1 [])扩展到
(def f1 (.withMeta (clojure.core/fn f1 ([])) (.meta (var f1))))