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
答案 0 :(得分:8)
确实可以回想一下,F#序列是一个计算。无论你如何实现它,在一天结束时你应该有一个新的计算,如果被枚举,首先产生附加的元素,然后产生旧的序列。在大多数直接形式中,这可以使用a sequence expression:
来实现> let mySeq = {1..5}
> seq { yield 0; yield! mySeq };;
val it : seq<int> = seq [0; 1; 2; 3; ...]
Seq.append
库函数只是语义上相同操作的优化实现。