On the Design, Implementation, and Use of Laziness in R (2019)
arxiv.org
arxiv.org
But it's not clear to me that he'd necessarily remove these features in an R clone. For example, eval is one of the features to remove. Python has eval, and I think many people use it, because it's convenient. Although it's hard to implement in a static language, that isn't a good reason to remove it in a dynamic scripting language. A PEP to remove it would probably get shot down immediately.
> (Lazy evaluation) is an important property of R as a programming language, but is generally not important when you’re writing your own functions for data analysis.
Source: R for Data Science https://r4ds.had.co.nz/functions.html#lazy-evaluation
But I think it’s likely that most users, and most code, are entirely unaware of lazy evaluation.
Astract example: a function that takes in a "bare" column name and later "embraces" it in a data frame context.
Concrete example: this function filters for c being nonzero, and uses lazy evaluation:
function (df,c) { df |> filter({{c}} != 0) }
That's an acceptable level of complexity for "not really programmer" R users to get something done. Whether or not they actually understand what they are doing under the hood? That's a different issue.