|
1 | 1 |
|
2 | | -# rlang 0.0.0.9000 |
| 2 | +# rlang 0.1 |
3 | 3 |
|
4 | | -* Fork rlang from lazyeval. |
5 | | - |
6 | | -# lazyeval 0.2.0.9000 |
7 | | - |
8 | | -* No longer check the type of the sides of the formula. |
9 | | - |
10 | | -# lazyeval 0.2.0 |
11 | | - |
12 | | -## Formula-based lazy evaluation |
13 | | - |
14 | | -Lazyeval has a new system for lazy-eval based on formulas, described in depth in the new `lazyeval` vignette. This system is still a little experimental - it hasn't seen much use outside of the vignette, so it certainly may change a little in the future. However, long-term goal is to use these tools across all of my packages (ggplot2, tidyr, dplyr, etc), and I am fairly confident that this is a robust system that won't need major changes. |
15 | | - |
16 | | -There are three key components: |
17 | | - |
18 | | -* `tidy_eval()` evaluates a formula in the environment where it was defined. |
19 | | - If supplied, values are first looked for in an optional `data` argument. |
20 | | - Pronouns `.data` and `.env` can be used to resolve ambiguity in this case. |
21 | | - (#43). Longer forms `tidy_eval_rhs()` and `tidy_eval_lhs()` emphasise the side |
22 | | - of the formula that you want to evaluate (#64). |
23 | | - |
24 | | -* `expr_interp()` provides a full quasiquoting system using `uq()` for unquote |
25 | | - and `uqs()` for unquote-splice (#36). |
26 | | - |
27 | | -* `f_capture()` and `dots_capture()` make it easy to turn promises |
28 | | - and `...` into explicit formulas. These should be used sparingly, as |
29 | | - generally lazy-eval is preferred to non-standard eval. |
30 | | - |
31 | | -* For functions that work with `...`, `f_list()` and `as_f_list()` make it |
32 | | - possible to use the evaluated LHS of a formula to name the elements of a |
33 | | - list (#59). |
34 | | - |
35 | | -The core components are accompanied by a number of helper functions: |
36 | | - |
37 | | -* Identify a formula with `is_formula()`. |
38 | | - |
39 | | -* Create a formula from a quoted call and an environment with `new_f()`. |
40 | | - |
41 | | -* "Unwrap" a formula removing one level from the stack of parent environments |
42 | | - with `f_unwrap()`. |
43 | | - |
44 | | -* Get or set either side of a formula with `f_rhs()` or `f_lhs()`, and |
45 | | - the environment with `f_env()`. |
46 | | - |
47 | | -* Convert to text/label with `f_text()` and `f_label()`. |
48 | | - |
49 | | -I've also added `expr_find()`, `expr_text()` and `expr_label()` explicitly to find the expression associated with a function argument, and label it for output (#58). This is one of the primary uses cases for NSE. `expr_env()` is a similar helper that returns the environment associated with a promise (#67). |
50 | | - |
51 | | -## Fixes to existing functions |
52 | | - |
53 | | -* `lazy_dots()` gains `.ignore_empty` argument to drop extra arguments (#32). |
54 | | - |
55 | | -* `expr_interp.formula()` only accepts single-sided formulas (#37). |
56 | | - |
57 | | -* `expr_interp()` accepts an environment in `.values` (#35). |
58 | | - |
59 | | -* `expr_interp.character()` always produes a single string, regardless of |
60 | | - input length (#27). |
61 | | - |
62 | | -* Fixed an infinite loop in `lazy_dots(.follow_symbols = TRUE)` (#22, #24) |
63 | | - |
64 | | -* `lazy()` now fails with an informative error when it is applied on |
65 | | - an object that has already been evaluated (#23, @lionel-). |
66 | | - |
67 | | -* `lazy()` no longer follows the expressions of lazily loaded objects |
68 | | - (#18, @lionel-). |
69 | | - |
70 | | -# lazyeval 0.1.10 |
71 | | - |
72 | | -* `as.lazy_dots()` gains a method for NULL, returning a zero-length |
73 | | - list. |
74 | | - |
75 | | -* `auto_names()` no longer truncates symbols (#19, #20) |
| 4 | +Initial release. |
0 commit comments