【发布时间】:2023-04-08 12:16:01
【问题描述】:
在clojure 中,我想对序列的所有元素应用一个函数并返回一个map,其中键是序列的元素,值是映射序列的元素.
我写了以下函数函数。但我想知道为什么这样的功能不是clojure 的一部分。也许它不是惯用的?
(defn map-to-object[f lst]
(zipmap lst (map f lst)))
(map-to-object #(+ 2 %) [1 2 3]) => {1 3, 2 4, 3 5}
【问题讨论】:
-
这没有错。您可能还会看到
(into {} (map (juxt identity f) coll))。核心中的类似功能是memoize,用于常见用例。 -
@A.Webb 您能否详细说明与
memoize的联系? -
如果函数是
f,而结果映射是m,那么(f x)和(m x)在lst域中具有相同的值。但是,(m x)的值已被预先计算,换句话说,已被记忆。 -
@A.Webb 我正在查看code of
memoize,但我没有看到与我的问题相关的任何内容 -
我无法在评论中给出完整的解释,所以请参阅下面的新答案。
标签: clojure clojurescript