以下take-while-and-n-more
を実装するためのClojureでの慣用の方法は何ですか複数のアイテムを、しばらく時間がかかるとn:Clojureのは
=> (take-while-and-n-more #(<= % 3) 1 (range 10))
(0 1 2 3 4)
を私の試みは、次のとおりです。
(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))))))
連結遅延シーケンスを返します – soulcheck
あなたは正しいです。私は私の答えを編集しました。それでも、split-withは、シーケンスの述部に一致する部分を2回トラバースします。 –