强制将R函数调用设为纯

时间:2018-12-15 18:15:21

标签: r purely-functional

问题

是否有一种方法可以强制R中的函数调用是纯函数?用例:drake。我想保护调用环境及其祖先不受用户功能的修改。

测试用例

before <- ls()
f <- function() {
  x <<- 1
  data("mtcars")
  return("abc")
}
output <- pure_function_call(f())
after <- setdiff(ls(), c("before", "f", "output"))
print(before)
print(after)
print(output)

要求

  • beforeafter必须同意。
  • "x""mtcars"都必须缺少字符串beforeafter
  • output必须等于"abc"
  • pure_function_call()必须在调用测试用例的同一R会话中调用f()。例如。不允许使用callr::r()

过去尝试失败

  • local(f())
  • (function(){f()})()

0 个答案:

没有答案