Qual è il modo idiomatico in Clojure per attuare take-while-and-n-more
di seguito:Clojure take-po 'e n più elementi
=> (take-while-and-n-more #(<= % 3) 1 (range 10))
(0 1 2 3 4)
La mia prova è:
(defn take-while-and-n-more [pred n coll]
(let
[take-while-result (take-while pred coll)
n0 (count take-while-result)]
(concat
take-while-result
(into [] (take n (drop n0 coll))))))
concat restituisce una sequenza lenta – soulcheck
Hai ragione. Ho modificato la mia risposta. Tuttavia, split-with risulterà nel percorrere due volte la parte di corrispondenza del predicato della sequenza. –