相关疑难解决方法(0)

Clojure中符号与变量的区别

我总是对Clojure中的Symbols和Vars感到困惑.例如,可以肯定地说+是用于表示var的符号,并且此var指向一个可以添加数字的函数的值吗?

那么当我在REPL中输入"+"时,会一步一步地发生什么?

  1. 符号被限定为命名空间,在本例中为clojure.core
  2. 然后在一些符号表中有+指向var的信息
  3. 评估此var时,结果是函数值?

clojure

44
推荐指数
3
解决办法
5573
查看次数

在Clojure中运行解析和符号函数的pound-quote(hash-quote,#')?

也许你可以帮我在文档中找到这个.我正在使用pound-quote能够在执行之前传递未评估的函数名称.例如:

(#'cons 1 ())
;(1)

(defn funcrunner [func a b]
  (func a b))

(funcrunner cons 'a ())
;(a)

(funcrunner 'cons 'a ())
'()

(funcrunner #'cons 'a ())
;(a)

#'cons
;#'clojure.core/cons

(resolve (symbol 'cons))
;#'clojure.core/cons
Run Code Online (Sandbox Code Playgroud)

我的猜测是这是一个读者宏.

我的问题是(a)英镑报价(#')的简写是什么?(b)你能解释一下它在做什么吗?(c)你能在文档中找到它吗?(d)它实际上是解析和符号功能的简写吗?

PS - 对于那些不在美国的人 - #也称为'哈希'或'交叉哈希'.

PPS - 我知道我的例子使得这需要多余.我很想知道这是完全冗余还是有特定用例.

eval clojure

16
推荐指数
2
解决办法
6090
查看次数

Clojure参考项目是最新的?

从Clojure开始,我发现了Rich Hickey的演讲,他演示了Clojure在基本Ant模拟器上的一些优势.

这段代码仍然可以被认为是Clojure的一个很好的参考吗?特别是当他递归地向代理发送函数以模拟游戏循环时的部分.例:

(defn animation [x]
  (when b/running
    (send-off *agent* #'animation))
    (. panel (repaint))
  (. Thread (sleep defs/animation-sleep-ms))
  nil)
Run Code Online (Sandbox Code Playgroud)

编辑:

我对#'阅读器宏不感兴趣,但更不用说它是惯用的/好的Clojure以递归方式调用代理上的函数.

lisp clojure

6
推荐指数
1
解决办法
838
查看次数

标签 统计

clojure ×3

eval ×1

lisp ×1