Извините, это немного сложно.
Я хочу захватить выражение аргумента, но также знаю, в какой среде оно должно оцениваться. Примерно так:
make.promise = function(x = print(b), b = 7) {
expr = substitute(x)
env = parent.frame()
function() {
eval(expr, env)
}
}
p1 = (
function() {
a = 2
make.promise(print(a))
}
)()
p2 = make.promise()
Проблема в том, что если для x
не задан аргумент, его среда становится локальной make.promise()
, и я не знаю, как это обнаружить. Есть ли функция, отличная от substitute
, которую я мог бы использовать, которая также захватывает среду?