gpt4 book ai didi

f# - 实现让! ... 和! ...在自定义计算表达式中

转载 作者:行者123 更新时间:2023-12-04 12:28:01 24 4
gpt4 key购买 nike

我想为此构造添加对我的计算表达式构建器的支持:

let f = 
foo {
let! x =
foo {
return 1
}
and! y =
foo {
return 2
}

return x + y
}
编译器说我必须实现 Bind2MergeSource .但是,我在 the docs 中找不到它们。 .
这些应该有什么签名?你能举个简单的例子吗?

最佳答案

这是一个适用于您的示例的简单构建器:

type Foo<'t> = MkFoo of 't

type FooBuilder() =
member _.Bind(MkFoo x, f) = f x
member _.Return(x) = MkFoo x
member _.MergeSources(MkFoo x, MkFoo y) = MkFoo (x, y)

let foo = FooBuilder()

let f =
foo {
let! x = foo { return 1 }
and! y = foo { return 2 }
return x + y
}
printfn "%A" f // output: MkFoo 3
MergeSources的目的是创建一个将由编译器自动去元组的结果元组。您可能还会找到 this examplethis SO question有用。

关于f# - 实现让! ... 和! ...在自定义计算表达式中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69034547/

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