[Rd] Generalised piping into operators
Duncan Murdoch
murdoch@dunc@n @end|ng |rom gm@||@com
Fri Apr 21 19:00:46 CEST 2023
On 21/04/2023 12:16 p.m., Michael Milton wrote:
> I'm afraid I don't understand. I know that parsing `+`(1, 1) returns a
> result equivalent to `1 + 1`, but why does that impose a restriction on
> parsing the pipe operator? What is the downside of allowing arbitrary
> RHS functions?
I thought the decision to exclude "_ + 1" happens after enough parsing
has happened so that the code making the decision can't tell the
difference between "_ + 1" and "`+`(_, 1)". I might be wrong about
that, but this suggests it:
> quote(_ + 1)
Error in quote("_" + 1) : invalid use of pipe placeholder (<input>:1:0)
> quote(`+`(_, 1))
Error in quote("_" + 1) : invalid use of pipe placeholder (<input>:1:0)
On the other hand, this works:
> quote(x |> `+`(e1 = _, 1))
x + 1
So maybe `+`() is fine after all.
Duncan Murdoch
More information about the R-devel
mailing list