我無法編寫一個優雅的drop-last-by
或butlast-by
函數。一個謂詞爲真的集合中除最後一個元素之外的所有元素的序列
(drop-last-by odd? [2 1 9 4 7 7 3]) ; => (2 1 9 4)
(drop-last-by odd? [2 4]) ; => (2 4)
(drop-last-by odd? [9]) ; =>()
我到目前爲止的工作,但似乎有點笨拙,我不知道是否可以在兩三行完成。
(defn drop-last-by [pred coll]
(let [p (partition-by pred coll)]
(apply concat (if (and (seq p) (pred (first (last p))))
(butlast p)
p))))