如何在 CLOJURE 中使用名称和值并行创建多个代理(for?或 map?)?

How to create multiple agents in parallel (for? or map?) with name and values in CLOJURE?

我正在尝试制作一堆代理。个人可以做到:

(def myAgent (agent 3))

但是如果我想制作很多代理,如何在匿名函数中为代理分配名称和值?我有这个:

(def agents (vec (map agent (range 0 50)) ))

这使得有 50 个代理,但其中 none 个具有价值。当我尝试匿名函数时:

(def agents (vec (map (fn [x] (def x (agent 3)) (range 0 50)) ))

没用。任何帮助将不胜感激。

创建一个包含 3 个代理的映射,其名称是映射键 012,映射值是具有初始值 :initial-value 的代理

user=> (zipmap (range 3) (repeatedly  #(agent :initial-value)))
{0 #object[clojure.lang.Agent 0x31edaa7d {:status :ready, :val :initial-value}], 
 1 #object[clojure.lang.Agent 0x26adfd2d {:status :ready, :val :initial-value}], 
 2 #object[clojure.lang.Agent 0x3336e6b6 {:status :ready, :val :initial-value}]}