gpt4 book ai didi

f# - 代码引用和表达式树

转载 作者:行者123 更新时间:2023-12-03 21:40:27 24 4
gpt4 key购买 nike

我想知道这两个功能在后台的实现方式是否有任何区别? IE。代码引用不只是建立在旧的良好表达式树之上吗?

谢谢。

最佳答案

这两种类型非常相似,但它们的表示方式不同。

  • 报价以更实用的方式设计。例如 foo a b将表示为一系列应用程序 App(App(foo, a), b)
  • 引号可以表示一些仅在 F# 中可用的构造,使用表达式树会隐藏它们。例如有 Expr.LetRecursive对于 let rec声明
  • 引用最初是在 .NET 3.0 中引入的。那时表达式树只能表示 C# 表达式,因此无法轻松捕获所有 F# 构造(引用可以捕获任何 F# 表达式,包括命令式表达式)。
  • 报价也被设计成易于使用递归处理。 ExprShape模块包含允许您仅用 4 种情况处理所有可能引用的模式(这比在 C# 中使用数十种方法实现访问者模式要容易得多)。

  • 当您有 F# 引用时,您可以使用 FSharp.Quotations.Evaluator 将其转换为 C# 表达式树。 .如果您使用一些需要来自 F# 的表达式树的 .NET API,这将非常有用。据我所知,没有相反的翻译。

    关于f# - 代码引用和表达式树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8133860/

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