gpt4 book ai didi

asynchronous - F# 异步映射不同类型

转载 作者:行者123 更新时间:2023-12-02 01:05:16 25 4
gpt4 key购买 nike

是否有一些方法可以使用 f# 执行以下操作?

let expr0:Async<int> = get0...
let expr1:Async<string> = get1...
//please pretend that this compiles
let finalFuture:Async<string> =
Async.Map2 expr0 expr1 (fun (v0:int) (v1:string) -> v0 + v1 )

let final:string = Async.RunSynchronously finalFuture

最佳答案

没有用于异步计算的预定义map 函数。也许是因为这真的取决于您想要如何评估这两个计算。

如果你想顺序运行它们,你可以使用:

let finalFuture = async {
let! v0 = expr0
let! v1 = expr1
return v0 + v1 }

如果要并行运行它们,可以使用Async.ParallelAsync.StartChild。例如:

let finalFuture = async {
let! v0Started = Async.StartChild(expr0)
let! v1Started = Async.StartChild(expr1)
let! v0 = v0Started
let! v1 = v1Started
return v0 + v1 }

在这两种情况下,更改代码以获取函数而不是直接调用 + 会很容易,因此您应该能够使用这两个片段来定义您自己的 map2 函数。

关于asynchronous - F# 异步映射不同类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23072821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com