gpt4 book ai didi

f# - 检查函数是否声明为递归

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

是否可以检查函数是否被声明为递归,即使用 let rec?

我有一个 memoize 函数,但它不适用于任意递归函数。如果用户使用这样的函数调用它,我想给出一个错误。 (请随意告诉我这是否是处理 F# 中错误的糟糕方法)

最佳答案

F# 代码被编译为 .NET 通用中间语言。 F# rec关键字只是对 F# 编译器的一个提示,它使正在定义的标识符在函数范围内可用。所以我相信没有办法在运行时发现函数被声明为递归的。

但是你可以使用 System.Diagnostic.StackTrace类 ( https://msdn.microsoft.com/en-us/library/system.diagnostics.stacktrace.aspx ) 在运行时获取和分析堆栈帧。但是访问堆栈信息会对性能产生重大影响(我假设您的内存功能是为了加快程序性能)。此外,由于编译器可以进行优化,因此程序的 Debug 和 Release 版本中的堆栈信息可能会有所不同。

关于f# - 检查函数是否声明为递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32311975/

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