gpt4 book ai didi

clojure - 如何在clojure中替换嵌套列表中的所有事件

转载 作者:行者123 更新时间:2023-12-05 01:13:09 26 4
gpt4 key购买 nike

给定以下序列:

seq = ( (a b) ( (c d) a ) a )
(replace a z seq) => ( (z b) ( (c d) z ) z )

如何使用惰性序列和尾递归来做到这一点?

最佳答案

看起来您想要遍历数据结构。

user=> (def s '((:a :b)((:c :d) :a) :a))
#'user/s
user=> (use 'clojure.walk)
nil
user=> (prewalk #(if (= :a %1) :z %1) s)
((:z :b) ((:c :d) :z) :z)

编辑:或者,如果您确实只需要更换,更简单
user=> (prewalk-replace '{a z} '((a b) ((c d) a)))
((z b) ((c d) z))

关于clojure - 如何在clojure中替换嵌套列表中的所有事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14164175/

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