gpt4 book ai didi

reflection - 在 F# 引号内嵌入变量

转载 作者:行者123 更新时间:2023-12-04 22:52:04 25 4
gpt4 key购买 nike

我正在为 SQL ( http://github.com/kolosy/furious ) 编写 F# dsl。

选择语句如下所示:

type person = {
personId: string
firstname: string
lastname: string
homeAddress: address
workAddress: address
altAddresses: address seq
}
and address = {
addressId: string
street1: string
zip: string
}

let (neighbor: person seq) =
db.Yield <@ Seq.filter (fun p -> p.homeAddress.zip = '60614') @>

一个明显(也是愚蠢)的问题是......我如何参数化报价?

如果我只是喜欢:
let z = "60614"
let (neighbor: person seq) =
db.Yield <@ Seq.filter (fun p -> p.homeAddress.zip = z) @>

然后 z被解析为静态属性访问器( PropertyGet(None, String z, []) )。我需要一些能让我仅根据引用检索变量/let 绑定(bind)的值的东西。想法?

最佳答案

报价不是我的强项,但在这里查看差异:

let z = "60614" 
let foo = <@ List.filter (fun s -> s = z) @>
printfn "%A" foo

let foo2 =
let z = z
<@ List.filter (fun s -> s = z) @>
printfn "%A" foo2

我认为可能让“z”在表达式中是本地的,这意味着该值被捕获,而不是属性引用。

关于reflection - 在 F# 引号内嵌入变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3232601/

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