gpt4 book ai didi

F#报价评估问题

转载 作者:行者123 更新时间:2023-12-05 00:07:10 28 4
gpt4 key购买 nike

我遇到了 F# powerpack 报价评估的问题。

open Microsoft.FSharp.Linq.QuotationEvaluation

let print x = System.Console.WriteLine(sprintf "%A" x)

type record = { x:int; y:int }
let val1 = { x = 1; y = 1; }
let val2 = { x = 1; y = 1; }
let result = val1 = val2
print result

let quote = <@ let value1 = { x = 1; y = 1; }
let value2 = { x = 1; y = 1; }
let result2 = value1 = value2
result2 @>

print (quote.EvalUntyped())

如您所料,第一个结果是正确的。第二个是假的。这是一个错误,还是我错过了什么?

最佳答案

这对我来说似乎是一个错误。 F# 团队的某个人可能会对此给出明确的答案:-)。同时,这里有一个您可以使用的简单解决方法 - 问题似乎与 = 的编译有关。运算符(operator)。您可以定义自己的运算符(或函数)并从引用的代码中调用此运算符:

let (><) a b = a = b
let quote =
<@ let value1 = { x = 1; y = 1; }
let value2 = { x = 1; y = 1; }
let result2 = value1 >< value2
result2 @>
print (quote.EvalUntyped())

而不是生成对标准的错误调用 =运算符,这将生成调用自定义运算符的代码(然后将比较作为标准的、正确编译的 F# 代码运行),因此这会给出预期的结果。

关于F#报价评估问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2344805/

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