|
|
|
|
|
by uryga
1802 days ago
|
|
https://www.r-bloggers.com/2018/07/about-lazy-evaluation/ tldr: basically, R passes all function arguments as bundles of `(expr_ast, env)` [called "promises"]. normally, they get evaluated upon first use, but you can also access the AST and mess around with it. AFAIK this is called an "Fexpr" in the LISP world. (originally i had a nice summary, but my phone died mid-writing and i'm not typing all that again, sorry!) it's very powerful (at the cost of being slow and, i imagine, impossible to optimize). it enables lots of little DSLs everywhere - e.g. lm() from stats, aes() from ggplot2, any dplyr function - which can be both a blessing and a curse. |
|