For 2), it is not exposed in R's standard library but it is exposed in
the Rinternals API. A promise that is forced in normal evaluation will
have PRENV set to NULL.

Peter

On Tue, Jan 2, 2018 at 4:19 PM, Evan James Patterson
<epatt...@stanford.edu> wrote:
> Hello R experts,
>
>
> I plan to develop a tool for dynamic analysis of R programs. I would like to 
> trace function calls at runtime, capturing argument and return values. 
> Following a suggestion made some time ago on this list, my high-level 
> implementation strategy is to rewrite the AST, augmenting call expressions 
> with pre-call and post-call shims to capture the arguments and return value, 
> respectively.
>
>
> I can think of only one fundamental conceptual obstacle to this approach: R 
> functions are not necessarily referentially transparent. The arguments 
> received by a function are not values but promises. They can be evaluated 
> directly ("standard evaluation"), after applying arbitrary syntactic 
> transformations ("non-standard evaluation", aka NSE), or not at all. 
> Therefore, if you peek at the values of function arguments before evaluating 
> the function, you risk altering the semantics of the program, possibly 
> fatally.
>
>
> I'm looking for general advice about how to cope with NSE in this context. I 
> also have some specific questions:
>
>
> 1) Is it possible to determine whether a given function (primitive, in R, or 
> external) uses NSE on some or all of its arguments?
>
>
> 2) Is it possible to inspect the promise objects received by functions, say 
> to determine whether they have been evaluated, without actually evaluating 
> them? The R manual is not encouraging in this area:
>
>
> https://cran.r-project.org/doc/manuals/r-release/R-lang.html#Promise-objects
>
>
> Thank you,
>
>
> Evan
>
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to