[Rd] [External] Re: New pipe operator

iuke-tier@ey m@iii@g oii uiow@@edu iuke-tier@ey m@iii@g oii uiow@@edu
Sat Dec 5 03:11:17 CET 2020


On Sat, 5 Dec 2020, Duncan Murdoch wrote:

> On 04/12/2020 2:26 p.m., luke-tierney using 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 using 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 using uiowa.edu
Iowa City, IA 52242                 WWW:  http://www.stat.uiowa.edu


More information about the R-devel mailing list