gpt4 book ai didi

functional-programming - 惯用地在满足谓词的序列中的两个项目之间插入项目?

转载 作者:行者123 更新时间:2023-12-04 08:41:34 27 4
gpt4 key购买 nike

假设我有一个谓词,它接受两个项目并返回 true 或 false。我想在为谓词返回 true 的序列中的每个连续对之间插入一个项目。我想出了几个解决方案,但我想知道在 Clojure 中按功能执行它的惯用方法是什么?

最佳答案

我的初稿是这样的

(defn insert-between [pred inter coll]
(lazy-seq
(when-let [s (seq coll)]
(cons (first s)
(mapcat (fn [[left right]]
(if (pred left right)
[inter right]
[right]))
(partition 2 1 s))))))


user> (insert-between < :less [1 6 7 4 3])
(1 :less 6 :less 7 4 3)

似乎有效,但我以一种丑陋的方式对第一个元素进行了特殊处理,我认为你可以解决这个问题。无论如何,该解决方案肯定可以改进。

关于functional-programming - 惯用地在满足谓词的序列中的两个项目之间插入项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7831109/

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