[Rd] Support for user defined unary functions
Gabriel Becker
gmbecker at ucdavis.edu
Thu Mar 16 17:01:13 CET 2017
Jim,
This seems cool. Thanks for proposing it. To be concrete, he user-defined
unary operations would be of the same precedence (or just slightly below?)
built-in unary ones? So
"100" %identical% %chr% 100
would work and return TRUE under your patch?
And with %num% <- as.numeric, then
1 + - %num% "5"
would also be legal (though quite ugly imo) and work?
Best,
~G
On Thu, Mar 16, 2017 at 7:24 AM, Jim Hester <james.f.hester at gmail.com>
wrote:
> R has long supported user defined binary (infix) functions, defined
> with `%fun%`. A one line change [1] to R's grammar allows users to
> define unary (prefix) functions in the same manner.
>
> `%chr%` <- function(x) as.character(x)
> `%identical%` <- function(x, y) identical(x, y)
>
> %chr% 100
> #> [1] "100"
>
> %chr% 100 %identical% "100"
> #> [1] TRUE
>
> This seems a natural extension of the existing functionality and
> requires only a minor change to the grammar. If this change seems
> acceptable I am happy to provide a complete patch with suitable tests
> and documentation.
>
> [1]:
> Index: src/main/gram.y
> ===================================================================
> --- src/main/gram.y (revision 72358)
> +++ src/main/gram.y (working copy)
> @@ -357,6 +357,7 @@
> | '+' expr %prec UMINUS { $$ = xxunary($1,$2);
> setId( $$, @$); }
> | '!' expr %prec UNOT { $$ = xxunary($1,$2);
> setId( $$, @$); }
> | '~' expr %prec TILDE { $$ = xxunary($1,$2);
> setId( $$, @$); }
> + | SPECIAL expr { $$ = xxunary($1,$2);
> setId( $$, @$); }
> | '?' expr { $$ = xxunary($1,$2);
> setId( $$, @$); }
>
> | expr ':' expr { $$ =
> xxbinary($2,$1,$3); setId( $$, @$); }
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
--
Gabriel Becker, PhD
Associate Scientist (Bioinformatics)
Genentech Research
[[alternative HTML version deleted]]
More information about the R-devel
mailing list