?The shorthand form \(x) x + 1 is parsed as function(x) x + 1. It may be helpful in making code containing simple function expressions more readable.? Color me unimpressed. Over the decades I've seen several "who can write the shortest code" threads: in Fortran, in C, in Splus, ... The same old idea that "short" is a synonym for either elegant, readable, or efficient is now being recylced in the tidyverse. The truth is that "short" is actually an antonym for all of these things, at least for anyone else reading the code; or for the original coder 30-60 minutes after the "clever" lines were written. Minimal use of the spacebar and/or the return key isn't usually held up as a goal, but creeps into many practiioner's code as well. People are excited by replacing "function(" with "\("? Really? Are people typing code with their thumbs? I am ambivalent about pipes: I think it is a great concept, but too many of my colleagues think that using pipes = no need for any comments. As time goes on, I find my goal is to make my code less compact and more readable. Every bug fix or new feature in the survival package now adds more lines of comments or other documentation than lines of code. If I have to puzzle out what a line does, what about the poor sod who inherits the maintainance? -- Terry M Therneau, PhD Department of Health Science Research Mayo Clinic therneau at mayo.edu "TERR-ree THUR-noh"
Thanks for expressing this eloquently. I heartily agree. On Mon, Dec 7, 2020 at 12:04 PM Therneau, Terry M., Ph.D. via R-devel < r-devel at r-project.org> wrote:> ?The shorthand form \(x) x + 1 is parsed as function(x) x + 1. It may be > helpful in making > code containing simple function expressions more readable.? > > Color me unimpressed. > Over the decades I've seen several "who can write the shortest code" > threads: in Fortran, > in C, in Splus, ... The same old idea that "short" is a synonym for > either elegant, > readable, or efficient is now being recylced in the tidyverse. The truth > is that "short" > is actually an antonym for all of these things, at least for anyone else > reading the code; > or for the original coder 30-60 minutes after the "clever" lines were > written. Minimal > use of the spacebar and/or the return key isn't usually held up as a goal, > but creeps into > many practiioner's code as well. > > People are excited by replacing "function(" with "\("? Really? Are > people typing code > with their thumbs? > I am ambivalent about pipes: I think it is a great concept, but too many > of my colleagues > think that using pipes = no need for any comments. > > As time goes on, I find my goal is to make my code less compact and more > readable. Every > bug fix or new feature in the survival package now adds more lines of > comments or other > documentation than lines of code. If I have to puzzle out what a line > does, what about > the poor sod who inherits the maintainance? > > > -- > Terry M Therneau, PhD > Department of Health Science Research > Mayo Clinic > therneau at mayo.edu > > "TERR-ree THUR-noh" > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >-- "Whereas true religion and good morals are the only solid foundations of public liberty and happiness . . . it is hereby earnestly recommended to the several States to take the most effectual measures for the encouragement thereof." Continental Congress, 1778 [[alternative HTML version deleted]]
iuke-tier@ey m@iii@g oii uiow@@edu
2020-Dec-07 17:26 UTC
[Rd] [External] anonymous functions
I don't disagree in principle, but the reality is users want shortcuts and as a result various packages, in particular tidyverse, have been providing them. Mostly based on formulas, mostly with significant issues since formulas weren't designed for this, and mostly incompatible (tidyverse ones are compatible within tidyverse but not with others). And of course none work in sapply or lapply. Providing a shorthand in base may help to improve this. You don't have to use it if you don't want to, and you can establish coding standards that disallow it if you like. Best, luke On Mon, 7 Dec 2020, Therneau, Terry M., Ph.D. via R-devel wrote:> ?The shorthand form \(x) x + 1 is parsed as function(x) x + 1. It may be > helpful in making code containing simple function expressions more readable.? > > Color me unimpressed. > Over the decades I've seen several "who can write the shortest code" threads: > in Fortran, in C, in Splus, ... The same old idea that "short" is a synonym > for either elegant, readable, or efficient is now being recylced in the > tidyverse. The truth is that "short" is actually an antonym for all of > these things, at least for anyone else reading the code; or for the original > coder 30-60 minutes after the "clever" lines were written. Minimal use of > the spacebar and/or the return key isn't usually held up as a goal, but > creeps into many practiioner's code as well. > > People are excited by replacing "function(" with "\("? Really? Are people > typing code with their thumbs? > I am ambivalent about pipes: I think it is a great concept, but too many of > my colleagues think that using pipes = no need for any comments. > > As time goes on, I find my goal is to make my code less compact and more > readable. Every bug fix or new feature in the survival package now adds more > lines of comments or other documentation than lines of code. If I have to > puzzle out what a line does, what about the poor sod who inherits the > maintainance? > > >-- 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
It is easier to understand a function if you can see the entire function body at once on a page or screen and excessive verbosity interferes with that. On Mon, Dec 7, 2020 at 12:04 PM Therneau, Terry M., Ph.D. via R-devel <r-devel at r-project.org> wrote:> > ?The shorthand form \(x) x + 1 is parsed as function(x) x + 1. It may be helpful in making > code containing simple function expressions more readable.? > > Color me unimpressed. > Over the decades I've seen several "who can write the shortest code" threads: in Fortran, > in C, in Splus, ... The same old idea that "short" is a synonym for either elegant, > readable, or efficient is now being recylced in the tidyverse. The truth is that "short" > is actually an antonym for all of these things, at least for anyone else reading the code; > or for the original coder 30-60 minutes after the "clever" lines were written. Minimal > use of the spacebar and/or the return key isn't usually held up as a goal, but creeps into > many practiioner's code as well. > > People are excited by replacing "function(" with "\("? Really? Are people typing code > with their thumbs? > I am ambivalent about pipes: I think it is a great concept, but too many of my colleagues > think that using pipes = no need for any comments. > > As time goes on, I find my goal is to make my code less compact and more readable. Every > bug fix or new feature in the survival package now adds more lines of comments or other > documentation than lines of code. If I have to puzzle out what a line does, what about > the poor sod who inherits the maintainance? > > > -- > Terry M Therneau, PhD > Department of Health Science Research > Mayo Clinic > therneau at mayo.edu > > "TERR-ree THUR-noh" > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel-- Statistics & Software Consulting GKX Group, GKX Associates Inc. tel: 1-877-GKX-GROUP email: ggrothendieck at gmail.com
I mostly agree with your comments on anonymous functions. However, I think the main problem is cryptic-ness, rather than succinct-ness. The backslash is a relatively universal symbol within programming languages with C-like (ALGOL-like?) syntax. Where it denotes escape sequences within strings. Using the leading character for escape sequences, to define functions, is like using integers to define floating point numbers: my.integer <- as.integer (2) * pi Arguably, the motive is more to be ultra-succinct than cryptic. But either way, we get syntax which is difficult to read, from a mathematical and statistical perspective. On Tue, Dec 8, 2020 at 6:04 AM Therneau, Terry M., Ph.D. via R-devel <r-devel at r-project.org> wrote:> > ?The shorthand form \(x) x + 1 is parsed as function(x) x + 1. It may be helpful in making > code containing simple function expressions more readable.? > > Color me unimpressed. > Over the decades I've seen several "who can write the shortest code" threads: in Fortran, > in C, in Splus, ... The same old idea that "short" is a synonym for either elegant, > readable, or efficient is now being recylced in the tidyverse. The truth is that "short" > is actually an antonym for all of these things, at least for anyone else reading the code; > or for the original coder 30-60 minutes after the "clever" lines were written. Minimal > use of the spacebar and/or the return key isn't usually held up as a goal, but creeps into > many practiioner's code as well. > > People are excited by replacing "function(" with "\("? Really? Are people typing code > with their thumbs? > I am ambivalent about pipes: I think it is a great concept, but too many of my colleagues > think that using pipes = no need for any comments. > > As time goes on, I find my goal is to make my code less compact and more readable. Every > bug fix or new feature in the survival package now adds more lines of comments or other > documentation than lines of code. If I have to puzzle out what a line does, what about > the poor sod who inherits the maintainance? > > > -- > Terry M Therneau, PhD > Department of Health Science Research > Mayo Clinic > therneau at mayo.edu > > "TERR-ree THUR-noh" > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel