gpt4 book ai didi

F# 函数调用依赖关系图

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

我们有一个 F# 应用程序,它具有深度函数调用依赖关系图。它以分层方式执行财务计算。

我们如何提取依赖调用图?我们对完整的 AST 不感兴趣,只对模块/函数之间的依赖关系感兴趣。

目的是拥有一个简化版本的代码,可用于与领域专家的对话。

最佳答案

Scott Wlaschin 在他的 'Cycles and modularity in the wild' 中做了类似的事情文章。 His approach使用 Mono.Cecil 作为元数据读取器并在 SVG 中吐出依赖关系图。最近的一篇文章,'Analysis of Roslyn vs. the F# compiler'使用 the same method .

您可以根据自己的目的修改这些脚本。缺点是这种方法不是很精确;当代码编译为 IL 时,一些特定于 F# 的信息可能会丢失。

另一种方法是使用 FSharp.Compiler.Service作为元数据阅读器;它的优点是灵 active ,但是,可能需要一些时间才能习惯 FSharp.Compiler.Service API。您可以从程序集签名开始遍历整个层次结构来开始。这是一个relevant exampledocumentation .

本着同样的精神,如果函数被 ReflectedDefinitionAttribute 注释,那么 Reflection、Quotations 和 Pattern 模块可以用来检索依赖图。此方法在 FSharp Journal 中进行了解释和详细说明。 .

关于F# 函数调用依赖关系图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24757783/

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