Capture ... (dots) for later lazy evaluation.

Share:

Description

Capture ... (dots) for later lazy evaluation.

Usage

1
lazy_dots(..., .follow_symbols = FALSE, .ignore_empty = FALSE)

Arguments

...

Dots from another function

.follow_symbols

If TRUE, the default, follows promises across function calls. See vignette("chained-promises") for details.

.ignore_empty

If TRUE, empty arguments will be ignored.

Value

A named list of lazy expressions.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
lazy_dots(x = 1)
lazy_dots(a, b, c * 4)

f <- function(x = a + b, ...) {
  lazy_dots(x = x, y = a + b, ...)
}
f(z = a + b)
f(z = a + b, .follow_symbols = TRUE)

# .follow_symbols is off by default because it causes problems
# with lazy loaded objects
lazy_dots(letters)
lazy_dots(letters, .follow_symbols = TRUE)

# You can also modify a dots like a list. Anything on the RHS will
# be coerced to a lazy.
l <- lazy_dots(x = 1)
l$y <- quote(f)
l[c("y", "x")]
l["z"] <- list(~g)

c(lazy_dots(x = 1), lazy_dots(f))