gpt4 book ai didi

r - 查看 R 中的柯里化(Currying)函数(反向柯里化(Currying)?)

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

假设我有

library(functional)
f = function(x, p) { x^p }
f2 = Curry(f, p=2)

有没有办法找出仅给定 f2 的 p 被设置为什么?

最佳答案

看看这是否有用。本质上 p 参数是在 Curry()-ied 函数体的环境中携带的:

> body(f2)
do.call(FUN, c(.orig, list(...)))
> body(f2)[[1]]
do.call
> body(f2)[[3]]
c(.orig, list(...))
> body(f2)[[3]][[2]]
.orig
> eval(body(f2)[[3]][[2]])
Error in eval(expr, envir, enclos) : object '.orig' not found
> eval(body(f2)[[3]][[2]], environment(f2) )
$p
[1] 2

正如 BrodieG 评论的那样,这些可以用于对该问题的编程攻击:
> environment(f2)$.orig
$p
[1] 2

> environment(f2)$.orig$p
[1] 2

要了解为什么我没有偶然发现最初的比较:
> ls( envir=environment(f2) )
[1] "FUN"
> ls( envir=environment(f2) ,all.names=TRUE)
[1] "..." ".orig" "FUN"
ls函数只显示初始字符不是“点”的项目,除非 all.names参数设置为 TRUE .

所以这也是有益的:
> environment(f2) $FUN
function(x, p) { x^p }

关于r - 查看 R 中的柯里化(Currying)函数(反向柯里化(Currying)?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27828904/

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