我需要从我的函数中返回一个序列、一个数字和一个哈希映射(全部包装在向量中),以便打印的返回值看起来像这样:
由于我的输入可能很大,我希望从函数返回惰性序列/对象。构建序列的对组(返回向量中的第一个对象)已经足够简单,只需将 'lazy-seq' 用于包装构建它的 'conj' 调用即可使其变为惰性。
哈希映射表(返回向量中的第三个对象,可能非常大)正在与序列相同的 loop-recur 块中进行构建(使用 assoc 调用)。哈希映射表是一些调用方将使用的附加信息,但如果对偶序列作为惰性返回,则我想知道是否有意义发送一个可能巨大的哈希映射表与(高效的)惰性序列一起返回,即使我将其作为可选的返回值。哈希映射表中的条目与惰性序列中的对组相关联。
因此,这是我的新手问题:在大型 HashMap 的位置上是否有任何意义发送 MapEntry 的惰性序列?也就是说,假设用户会取一块惰性序列的 MapEntry 并将它们转换为 hashmap 来进行查找... 如果失败,则他们将取下一个块,以此类推。这样惰性使用关联数据是否合理?
在 Clojure 中,有一些传统方法来返回/管理大的关联数据吗?感谢您提前给出的帮助和任何想法。
[ ([:c :a] [:e :c] [:f :e] [:d :e] [:g :f] [:b :a]) 15
{:g :c, :f :a, :c :e, :d :a, :b :a, :c :a} ]
由于我的输入可能很大,我希望从函数返回惰性序列/对象。构建序列的对组(返回向量中的第一个对象)已经足够简单,只需将 'lazy-seq' 用于包装构建它的 'conj' 调用即可使其变为惰性。
哈希映射表(返回向量中的第三个对象,可能非常大)正在与序列相同的 loop-recur 块中进行构建(使用 assoc 调用)。哈希映射表是一些调用方将使用的附加信息,但如果对偶序列作为惰性返回,则我想知道是否有意义发送一个可能巨大的哈希映射表与(高效的)惰性序列一起返回,即使我将其作为可选的返回值。哈希映射表中的条目与惰性序列中的对组相关联。
因此,这是我的新手问题:在大型 HashMap 的位置上是否有任何意义发送 MapEntry 的惰性序列?也就是说,假设用户会取一块惰性序列的 MapEntry 并将它们转换为 hashmap 来进行查找... 如果失败,则他们将取下一个块,以此类推。这样惰性使用关联数据是否合理?
在 Clojure 中,有一些传统方法来返回/管理大的关联数据吗?感谢您提前给出的帮助和任何想法。
(loop [ my-map {} my-pairs [] ...] ... (recur (delay (assoc my-map k v)) ...))
- Don(delay (loop [my-map {}] (if (...) (recur ...) my-map)))
。 - amalloy