如何在F#中调用闭包内部的收益率?

如何在F#中调用闭包内部的收益率?,f#,closures,sequence,yield,F#,Closures,Sequence,Yield,我正在尝试编写一个函数,它接受字符串序列,并在Seq.iter的帮助下返回以给定另一个字符串为前缀的字符串序列,但无法推导出正确的语法 //let concatElemSeq (elem : string) (s : seq<string>) : seq<string> = (Seq.map (fun it -> elem+it) s) let concatElemSeq (elem : string) (s : seq<string>) : seq&

我正在尝试编写一个函数,它接受字符串序列,并在Seq.iter的帮助下返回以给定另一个字符串为前缀的字符串序列,但无法推导出正确的语法

//let concatElemSeq (elem : string) (s : seq<string>) : seq<string> = (Seq.map (fun it -> elem+it) s)

let concatElemSeq (elem : string) (s : seq<string>) : seq<string> = seq {
    Seq.iter (fun it -> 
        yield elem+it
        ()
    ) s
}
//让concatElemSeq(elem:string)(s:seq):seq=(seq.map(fun-it->elem+it)s)
让concatElemSeq(elem:string)(s:seq):seq=seq{
序号:iter(趣味it->
屈服元素+它
()
)
}

如何完成?

不,不可能像这样嵌套
生成
<代码>产量
必须是计算表达式语法的一部分

要实现您想要的,请使用
for

let concatElemSeq (elem : string) (s : seq<string>) : seq<string> = seq { 
    for it in s do
        yield elem+it
}
或者,您可以使用
Seq.map
并部分应用
(+)

然后减少:

let concatElemSeq elem = Seq.map ((+) elem)

不,这样嵌套
产生
是不可能的<代码>产量
必须是计算表达式语法的一部分

要实现您想要的,请使用
for

let concatElemSeq (elem : string) (s : seq<string>) : seq<string> = seq { 
    for it in s do
        yield elem+it
}
或者,您可以使用
Seq.map
并部分应用
(+)

然后减少:

let concatElemSeq elem = Seq.map ((+) elem)