On 04/12/2020 2:26 p.m., luke-tierney at uiowa.edu wrote:> On Fri, 4 Dec 2020, D?nes T?th wrote: > >> >> On 12/4/20 3:05 PM, Duncan Murdoch wrote: >>> ... >>> >>> It's tempting to suggest it should allow something like >>> >>> ? mtcars |> subset(cyl == 4) |> lm(mpg ~ disp, data = .) >>> >>> which would be expanded to something equivalent to the other versions: but >>> that makes it quite a bit more complicated.? (Maybe _ or \. should be used >>> instead of ., since those are not legal variable names.) >> >> I support the idea of using an underscore (_) as the placeholder symbol. > > I strongly oppose adding a placeholder. Allowing for an optional > placeholder significantly complicates both implementing and explaining > the semantics. For a simple syntax transformation to be viable it > would also require some restrictions, such as only allowing a > placeholder as a top level argument and only once. Checking that these > restrictions are met, and accurately signaling when they are not with > reasonable error messages, is essentially an unsolvable problem given > R's semantics.I don't think you read my suggestion, but that's okay: you're maintaining it, not me. Duncan Murdoch> > The case where the LHS is to be passed as something other than the > first argument is unusual. For me, having that case stand out by using > a function expression makes it much easier to see and so makes the > code easier to understand. As a wearer of progressive bifocals > and someone whose screen is not always free of small dust particles, > having to spot the non-standard pipe stages by seeing a placeholder, > especially a . placeholder, is be a bug, not a feature. > > Best, > > luke > >> Syntactic sugars work the the best if 1) they require less keystrokes and/or >> 2) are easier to read compared to the "normal" syntax, and 3) can not lead to >> unexpected bugs (which is a major problem with the magrittr pipe). Using '_' >> fulfills all of these criteria since '_' can not clash with any variable in >> the environment. >> >> Denes >> >> ______________________________________________ >> R-devel at r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel >> >
iuke-tier@ey m@iii@g oii uiow@@edu
2020-Dec-05 02:11 UTC
[Rd] [External] Re: New pipe operator
On Sat, 5 Dec 2020, Duncan Murdoch wrote:> On 04/12/2020 2:26 p.m., luke-tierney at uiowa.edu wrote: >> On Fri, 4 Dec 2020, D?nes T?th wrote: >> >>> >>> On 12/4/20 3:05 PM, Duncan Murdoch wrote: >>>> ... >>>> >>>> It's tempting to suggest it should allow something like >>>> >>>> ? mtcars |> subset(cyl == 4) |> lm(mpg ~ disp, data = .) >>>> >>>> which would be expanded to something equivalent to the other versions: >>>> but >>>> that makes it quite a bit more complicated.? (Maybe _ or \. should be >>>> used >>>> instead of ., since those are not legal variable names.) >>> >>> I support the idea of using an underscore (_) as the placeholder symbol. >> >> I strongly oppose adding a placeholder. Allowing for an optional >> placeholder significantly complicates both implementing and explaining >> the semantics. For a simple syntax transformation to be viable it >> would also require some restrictions, such as only allowing a >> placeholder as a top level argument and only once. Checking that these >> restrictions are met, and accurately signaling when they are not with >> reasonable error messages, is essentially an unsolvable problem given >> R's semantics. > > I don't think you read my suggestion, but that's okay: you're maintaining > it, not me.I thought I did but maybe I missed something. You are right that supporting a placeholder makes things a lot more complicated. For being able to easily recognize the non-standard cases _ is better than . but for me at least not by much. We did try a number of variations; the code is in the R-syntax branch. At the root of that branch are two .md files with some notes as of around useR20. Once things settle down I may update those and look into turning them into a blog post. Best, luke> > Duncan Murdoch > >> >> The case where the LHS is to be passed as something other than the >> first argument is unusual. For me, having that case stand out by using >> a function expression makes it much easier to see and so makes the >> code easier to understand. As a wearer of progressive bifocals >> and someone whose screen is not always free of small dust particles, >> having to spot the non-standard pipe stages by seeing a placeholder, >> especially a . placeholder, is be a bug, not a feature. >> >> Best, >> >> luke >> >>> Syntactic sugars work the the best if 1) they require less keystrokes >>> and/or >>> 2) are easier to read compared to the "normal" syntax, and 3) can not lead >>> to >>> unexpected bugs (which is a major problem with the magrittr pipe). Using >>> '_' >>> fulfills all of these criteria since '_' can not clash with any variable >>> in >>> the environment. >>> >>> Denes >>> >>> ______________________________________________ >>> R-devel at r-project.org mailing list >>> https://stat.ethz.ch/mailman/listinfo/r-devel >>> >> > >-- Luke Tierney Ralph E. Wareham Professor of Mathematical Sciences University of Iowa Phone: 319-335-3386 Department of Statistics and Fax: 319-335-3017 Actuarial Science 241 Schaeffer Hall email: luke-tierney at uiowa.edu Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu