如何将postwalk-replace功能发送给代理

时间:2014-10-23 03:17:23

标签: clojure

我正在尝试将postwalk-replace函数发送到包含s表达式的代理。

(def myagent (agent '(+ (* 2 x) 2)))
(send myagent postwalk-replace {'x 3})

但是我没有替换,而是出现以下错误:

  

IllegalArgumentException包含?类型不支持:   clojure.lang.PersistentList

如何将postwalk-replace及其参数发送给代理?

1 个答案:

答案 0 :(得分:2)

(send a f x y)(send a #(f % x y))相同 - 它将代理的当前状态作为f的第一个参数传递。相反,postwalk-replace首先接受替换功能,然后接受替换功能。因此,您必须将一个函数传递给代理程序,该代理程序介于:(send a #(postwalk-replace '{x 3} %))

之间