整数の代わりに整数のseqに基づいてseqを分割するのはもっと慣用的な方法でしょうか?ここで整数のseqによる分割
は私の実装です:次に
(defn partition-by-seq
"Return a lazy sequence of lists with a variable number of items each
determined by the n in ncoll. Extra values in coll are dropped."
[ncoll coll]
(let [partition-coll (mapcat #(repeat % %) ncoll)]
(->> coll
(map vector partition-coll)
(partition-by first)
(map (partial map last)))))
(partition-by-seq [2 3 6] (range))
は((0 1) (2 3 4) (5 6 7 8 9 10))
を生み出します。
(cons x nil)がちょうど(x)なので、ここで 'when-let'を使うのが好きで、ifバージョンよりはるかにクリーンです。なぜ 'drop'の代わりに' nthrest'を使うのですか?内側の部分は、 '' @(最初の部分)(cons(take n coll)(分割部分)(drop n coll))))))) ' – ToBeReplaced
@ToBeReplaced' nthrestはちょうど落ち込んで、熱心に落ちるもので、私はこの文脈では適切だと思った。二番目の考えでは、私は全く問題があるかどうかは分かりません。実際、「最初の」は「時」の中に移動することができます。 –