Composite by Vitaly Kamiansky, Vladimir Ilin

<PackageReference Include="Composite" Version="1.5.5" />

 Seq

public static class Seq
public static IEnumerable<TOut> accumulateCollect<TIn, TOut>(Tuple<FSharpFunc<TIn, bool>[], FSharpFunc<TIn[], IEnumerable<TOut>>>[] rules, IEnumerable<TIn> source)

Finds elements in the input sequence to accumulate them in arrays, applies the respective transform functions to populated arrays, and concatenates the results.

public static IEnumerable<T[]> chunkByWeight<T>(int chunkWeight, FSharpFunc<T, int> weigh, IEnumerable<T> source)

Divides the input sequence into chunks of as many elements as possible their total weight not exceeding chunkWeight but not less than one element per batch.

public static FSharpFunc<Unit, FSharpOption<T>> fetchElementFunction<T>(IEnumerable<T> source)

Creates a function to fetch elements from the input sequence.

public static IEnumerable<T> ofComp<T>(Composite<T> source)

Views the given Composite as a sequence.

public static IEnumerable<MarkValuePair<TMark, TPayload>> ofMComp<TMark, TPayload>(Composite<TMark, TPayload> source)

Views the given marked composite as a sequence of mark value pairs.

public static IEnumerable<T>[] partition<T>(int numParts, IEnumerable<T> source)

Divides the input sequence into multiple non-intersecting sequences.