On Mon, Dec 7, 2020 at 12:54 PM Duncan Murdoch <murdoch.dun...@gmail.com> wrote: > An advantage of the current implementation is that it's simple and easy > to understand. Once you make it a user-modifiable binary operator, > things will go kind of nuts. > > For example, I doubt if there are many users of magrittr's pipe who > really understand its subtleties, e.g. the example in Luke's paper where > 1 %>% c(., 2) gives c(1,2), but 1 %>% c(c(.), 2) gives c(1, 1, 2). (And > I could add 1 %>% c(c(.), 2, .) and 1 %>% c(c(.), 2, . + 2) to > continue the fun.)
The rule is not so complicated. Automatic insertion is done unless you use dot in the top level function or if you surround it with {...}. It really makes sense since if you use gsub(pattern, replacement, .) then surely you don't want automatic insertion and if you surround it with { ... } then you are explicitly telling it not to. Assuming the existence of placeholders a possible simplification would be to NOT do automatic insertion if { ... } is used and to use it otherwise although personally having used it for some time I find the existing rule in magrittr generally does what you want. ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel