[Rd] anonymous functions

Abby Spurdle
2020-12-07T22:56:45Z

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