[Rd] precedence (was 'historical NA question')

peter dalgaard pdalgd at gmail.com
Wed May 7 23:01:38 CEST 2014


On 07 May 2014, at 21:52 , Simon Urbanek <simon.urbanek at r-project.org> wrote:

> On May 7, 2014, at 3:37 PM, Hervé Pagès <hpages at fhcrc.org> wrote:
> 
>> No big deal. These things can be tricky:
>> 
>> https://stat.ethz.ch/pipermail/r-devel/2006-January/036022.html
>> 
>> Sorry I couldn't resist ;-)
>> 
> 
> Yeah, but that's just yet another trip down the rabbit hole - why is -2 parsed as `-`(2) and not a single constant? Is there a way to express a negative constant in R? Hmm… 
> 

It's painful, but

> bquote(.(-2)^2)
-2^2
> eval(bquote(.(-2)^2))
[1] 4
> bquote(.(-2)^2)[[2]]
[1] -2
> mode(bquote(.(-2)^2)[[2]])
[1] "numeric"

The difficulty is that the tokenizer, which recognizes language elements before the parser goes to work on the grammatical structure, is unable to distinguish the -2 in "-2 + 2" from the one in "-2 ^ y". And since constants are generated by the tokenizer, negative ones are not generated. I don't think it is completely out of reach for the parser to recognize the pattern "unary minus a numeric constant" and fold it into a constant of the opposite sign, but I'm not volunteering... (and anyways, it is part of the bigger issue of general constant folding --- I suppose that Luke has a handle on that.)


> 
>> On 05/07/2014 09:16 AM, John Chambers wrote:
>>> On 5/7/14, 5:21 AM, Therneau, Terry M., Ph.D. wrote:
>>>> Hadley asked about the Blue book; my shelf still has the earlier brown
>>>> book
>>>>   Becker and Chambers, 1984, S: An interactive environment for data
>>>> analysis and graphics.
>>> 
>>> Historically interesting, but there was never a guarantee that Version 3
>>> of S (the "blue book") was back-compatible with earlier versions.  We
>>> gave users some help in "getting on the road" to converting, that was
>>> all (see Appendix 4 to the blue book).
>>> 
>>> For that one brief moment, we felt free to innovate.
>>> 
>>> John
>>> 
>>>> 
>>>> The manual page for precedence is
>>>> 
>>>> $               component select
>>>> %x              special operator
>>>> -               unary minus
>>>> :               sequence operator
>>>> ^ **            exponentiation
>>>> * /             mult/div
>>>> + -             add/sub
>>>> < > <= >= == != logical
>>>> !               not
>>>> & |             and/or
>>>> <- ->           assignment
>>>> 
>>>> Terry Therneau
>>>> 
>>>> ______________________________________________
>>>> R-devel at r-project.org mailing list
>>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>> 
>>> ______________________________________________
>>> R-devel at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>> 
>> -- 
>> Hervé Pagès
>> 
>> Program in Computational Biology
>> Division of Public Health Sciences
>> Fred Hutchinson Cancer Research Center
>> 1100 Fairview Ave. N, M1-B514
>> P.O. Box 19024
>> Seattle, WA 98109-1024
>> 
>> E-mail: hpages at fhcrc.org
>> Phone:  (206) 667-5791
>> Fax:    (206) 667-1319
>> 
>> ______________________________________________
>> R-devel at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>> 
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

-- 
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com



More information about the R-devel mailing list