gpt4 book ai didi

Clojure 评估惰性序列

转载 作者:行者123 更新时间:2023-12-02 09:11:10 25 4
gpt4 key购买 nike

嗨,我需要从 stringify 函数返回字符串,但目前我正在变得懒惰 seq。我无法理解如何评估惰性序列。

所以我需要的是像这样的链式调用:(println“格式化:”(fmt(stringify m)))

(defn stringify [m]
"Construct string expression"
(let [res (reduce-kv (fn [acc k v]
(let [s (str/join "" [v (name k)])]
(if (pos? v)
(if (empty? acc)
(concat acc ["+" s])
(concat acc s))
(concat acc s))
))

"" m)]
res))

(defn fmt [s]
"Apply formating rules"
(-> s
(.replaceAll "([+-])" " $1 ")
(println)))

最佳答案

concatseq 进行操作,而不是字符串。它适用于字符串,但将它们视为字符序列。它returns a lazy seq ,您可以使用 clojure.string/join 将其实现为字符串。

(clojure.string/join ""res) 替换 stringify 函数中的最后一个语句 res 应该可以解决问题。但是,您可以从一开始就使用 reduce-kv 构建一个字符串,使用 join 而不是 concat。您可以简化为任何内容,而不仅仅是集合/序列。

关于Clojure 评估惰性序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51924808/

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