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; ...]
Run Code Online (Sandbox Code Playgroud)
可能重复,但没有真正回答我的问题.
[1]Seq.append
如上所述使用
确实可以回想起F#序列是一个计算.无论你如何实现它,在一天结束时你应该有一个新的计算,如果被枚举,首先产生附加的元素,然后产生旧的序列.在大多数直接形式中,这可以使用序列表达式来实现:
> let mySeq = {1..5}
> seq { yield 0; yield! mySeq };;
val it : seq<int> = seq [0; 1; 2; 3; ...]
Run Code Online (Sandbox Code Playgroud)
Seq.append
库函数只是语义上相同动作的优化实现.