gpt4 book ai didi

Clojure pmap 返回与 map 不同的结果

转载 作者:行者123 更新时间:2023-12-02 04:49:57 24 4
gpt4 key购买 nike

我正在学习 clojure,并实现我的标准测试项目,Tic Tac Toe 10 .我以前用多种语言编写过相同的 AI,但在使用其他语言将其扩展超过 6 步时也遇到了问题。

我的 AI 算法基本上可以正常工作,但我正在尝试使用 pmap 提高速度。因为一切都是不可变的,所以我应该可以只用 pmap 代替 map 并得到相同的结果,但我没有看到。

(defn get-spot
[board player win-cond levels]
(def avail (get-available board))
(def final
(apply merge
(map #(array-map % (calc-score board player win-cond levels %)) avail)))
final)

但是那个地方的 pmap 返回不一致的结果。不确定从哪里开始寻找。如果需要,我可以发布更多代码。

最佳答案

到处用 let 替换 def 解决了这个问题。如果我不使用 let,我的函数会有很多不一致的副作用。

(defn get-spot
[board player win-cond levels]
(let [avail (get-available board)
final (apply merge
(pmap #(array-map % (calc-score board player win-cond levels %)) avail))]
final))

我编写了一堆 clojure 代码,并通读了许多教程。我不知道我是怎么错过这个非常重要的细节的。

关于Clojure pmap 返回与 map 不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29738620/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com