F # Как добавить первые 2 номера в бесконечной последовательности, а затем добавить следующие 2?

#f#

#f#

Вопрос:

Пример ввода: {1;2;3;4…}

  1. Как взять первые 2 числа amp; и добавить их?
  2. Поместите результат в новую последовательность
  3. Затем возьмите следующие 2 числа и добавьте их
  4. Поместите результат в новую последовательность
  5. и т.д..
 let nat = Seq.initInfinite (fun i -> i   1)

 

Результат должен быть: {3; 7 …}

Ответ №1:

Вы могли бы сделать что-то вроде этого:

 let nat = Seq.initInfinite (fun i -> i   1)
let f (s:seq<int>) =
    Seq.chunkBySize 2 s
    |> Seq.map Seq.sum
f nat // seq [3; 7; 11; 15; ...]
 

Комментарии:

1. Вы также можете использовать встроенную функцию для поддержки всех типов чисел, а не только int: let inline f s = ...

2. @Arshia001 какие еще типы чисел? числа не поддаются перечислению.

3. Например, целые числа без знака?