Я нашел этот вопрос в hubFS, но который обрабатывает критерии разделения, основанные на отдельных элементах. Я хотел бы разделить на основе сравнения смежных элементов, поэтому тип будет выглядеть следующим образом:
val split = ('T -> 'T -> bool) -> 'T list -> 'T list list
В настоящее время я пытаюсь начать с решения по требованию Дон, но я не могу понять, как инициализировать и использовать значение "prev" для сравнения. Складывается ли лучший способ?
//Don solution for single criteria, copied from hubFS
let SequencesStartingWith n (s:seq<_>) =
seq { use ie = s.GetEnumerator()
let acc = new ResizeArray<_>()
while ie.MoveNext() do
let x = ie.Current
if x = n && acc.Count > 0 then
yield ResizeArray.to_list acc
acc.Clear()
acc.Add x
if acc.Count > 0 then
yield ResizeArray.to_list acc }