Лучший способ добавить элемент в начале последовательности F#
F# List
предоставляет cons
(::
оператора) для добавления элемента в начало списка. Есть ли функция, чтобы сделать то же самое для Seq
? Единственный способ, которым я столкнулся, - это использовать Seq.append
следующим образом. Существует ли более эффективный/элегантный способ сделать это?
> let myLst = [1..5]
> 0::myLst;;
val it : int list = [0; 1; 2; 3; 4; 5]
> let mySeq = {1..5}
> Seq.append (seq [0]) mySeq;;
val it : seq<int> = seq [0; 1; 2; 3; ...]
возможный дубликат, но на самом деле не отвечает на мой вопрос.
[1] использует Seq.append
выше
1 ответов
это может помочь вспомнить, что последовательность F# действительно является вычислением. Независимо от того, как вы собираетесь достичь этого, в конце дня у вас должен быть новый расчет, который, будучи перечисленным, сначала дает добавленный элемент, а затем дает старую последовательность. В наиболее прямой форме это может быть достигнуто с помощью выражение последовательности:
> let mySeq = {1..5}
> seq { yield 0; yield! mySeq };;
val it : seq<int> = seq [0; 1; 2; 3; ...]
Seq.append
функция библиотеки - это просто оптимизированная реализация семантически одного и того же действия.