Clojure:在列表中移动项目

kfk*_*kfk 3 position list clojure

我有这个清单:

("a" "b" "c" "d" "e")
Run Code Online (Sandbox Code Playgroud)

我想在第一个位置移动"d":

("d" "a" "b" "c" "e")
Run Code Online (Sandbox Code Playgroud)

有没有直接的方法来做到这一点?

编辑

谢谢你的回答.我看了一下它,我这样做了:

(defn move-item [data item-to-move]
    (conj (remove #(= % item-to-move) data) item-to-move))
(move-item ["a" "b" "c" "d" "e"] ["d"])
Run Code Online (Sandbox Code Playgroud)

我不确定这是不是很好的设计,但它可以解决问题.

4e6*_*4e6 5

可能有用的功能:
1.rotate

user=> (defn rotate [xs] (cons (last xs) (drop-last xs)))
#'user/rotate
user=> (rotate '(1 2 3))
(3 1 2)
Run Code Online (Sandbox Code Playgroud)

2. replace

user=> (replace {1 4} [1 2 3 4])
[4 2 3 4]
Run Code Online (Sandbox Code Playgroud)