我正在尝试将postwalk-replace函数发送到包含s表达式的代理。
(def myagent (agent '(+ (* 2 x) 2)))
(send myagent postwalk-replace {'x 3})
但是我没有替换,而是出现以下错误:
IllegalArgumentException包含?类型不支持: clojure.lang.PersistentList
如何将postwalk-replace及其参数发送给代理?
答案 0 :(得分:2)
(send a f x y)
与(send a #(f % x y))
相同 - 它将代理的当前状态作为f
的第一个参数传递。相反,postwalk-replace首先接受替换功能,然后接受替换功能。因此,您必须将一个函数传递给代理程序,该代理程序介于:(send a #(postwalk-replace '{x 3} %))
。