检查包含生成函数的R包tailr时遇到问题
求助:R包tailr的示例简化与生成函数检查问题
我开发了一个名为tailr的R包,核心功能是把递归函数转换为尾递归风格的循环实现——它会先对目标递归函数做静态分析,再将其重构为等价的循环形式。
举个实际的转换例子:
它可以把这个尾递归阶乘函数:
factorial <- function(n, acc) { if (n <= 1) acc else factorial(n - 1, acc * n) }
转换成类似以下的循环版本(原转换代码被截断,核心逻辑是用循环替代递归调用):
factorial <- function(n, acc) { .tailr_n <- n .tailr_acc <- acc while(TRUE) { if (.tailr_n <= 1) return(.tailr_acc) .tailr_acc <- .tailr_acc * .tailr_n .tailr_n <- .tailr_n - 1 } }
现在我遇到了两个棘手的问题:
- 我原本希望为这个包设计更简化的示例,但因为对问题本身的理解还不够深入,暂时没法实现这一点;
- 在对包含生成函数的tailr包做合规性检查时,遇到了一些阻碍,导致包的验证流程不顺畅。
有没有大佬能给点思路或者建议?
内容的提问来源于stack exchange,提问作者Thomas Mailund
相关产品推荐
相关产品推荐

