gpt4 book ai didi

clojure - 替代使用原子

转载 作者:行者123 更新时间:2023-12-04 06:38:57 25 4
gpt4 key购买 nike

我有一个带有原子的 Clojurescript 小程序。一个字符串被放入这个原子中,它是一个函数(low-level-fn)的配置,该函数实际上被程序中的所有其他函数使用。接收所有配置的程序有一个入口点。这个程序的运行结构是一棵倒置的树,其中很多叶子实际上是low-level-fn

我的意图始终是摆脱这个原子作为完成程序的一部分 - 通过将配置字符串传递到外部函数使其成为高阶函数。或者通过添加最左边的字符串配置参数并创建部分函数来做同样的事情。在任何一种情况下,这个“尚未完成”的函数都在入口点函数中构造。

我的问题是,程序可能会变得比使用 atom 时更糟糕,因为“尚未完成”函数必须作为参数传递给程序中的几乎所有函数。

还有其他我应该考虑的想法吗?我很可能会摆脱原子,使整个程序成为一个纯函数。 编辑 - 无论有没有原子,程序仍然是一个纯函数。 编辑 - 是吗?

最佳答案

当我正确理解您的问题时,最简单的方法是使用闭包。

以下情况如何:

(defn myrunner [param]
;; generate closures depending on the parameter
(letfn [(my-fn [x]
(* param x))]
;; now process everything inside the letfn
(my-fn 2)))

(myrunner 2) ;; => 4
(myrunner 6) ;; => 12
;; parallel execution works, too
(pmap myrunner (range 100)) ;; 0, 2, 4,...

编辑:从示例中删除了副作用。

关于clojure - 替代使用原子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35361120/

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