From murdoch.duncan at gmail.com  Thu May  8 00:00:54 2014
From: murdoch.duncan at gmail.com (Duncan Murdoch)
Date: Wed, 07 May 2014 18:00:54 -0400
Subject: [Rd] precedence (was 'historical NA question')
In-Reply-To: <8D2277DD-434F-4FD4-B866-4EC8F1441902@r-project.org>
References: <3dfcdc$gnkvcv@ironport9.mayo.edu>	<536A5C52.4030907@r-project.org>
	<536A8B72.802@fhcrc.org>	<7CC02BBE-3F5D-4A11-87A1-F8B013BD081F@r-project.org>	<AD68281E-B44C-4DB3-9CE5-D513550C84A6@gmail.com>	<536AA877.4010301@fhcrc.org>
	<8D2277DD-434F-4FD4-B866-4EC8F1441902@r-project.org>
Message-ID: <536AAD16.4090608@gmail.com>

On 07/05/2014, 5:55 PM, Simon Urbanek wrote:
>
> On May 7, 2014, at 5:41 PM, Herv? Pag?s <hpages at fhcrc.org> wrote:
>
>> On 05/07/2014 02:01 PM, peter dalgaard wrote:
>>>
>>> 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".
>>
>> Are you saying that the tokenizer could be made smarter and recognize
>> "-2" as a token in "-2 ^ y", just because you didn't put a space between
>> "-" and "2"? So in "-2 ^ y" it would be token, but not in "- 2^y".
>> An therefore precedence would now depend on whether there is a space
>> after the minus or not, or something like that? I'm confused.
>>
>
> Nope, precedence would not change at all. "-2" and "- 2" are two different things - in case you didn't realize that spaces are important, try "a<-2" vs "a< -2". So, again, if -2 is a value then there is no precedence issue, since you have only operator in  "-2 ^ y" namely "^". In "- 2 ^ y" you have two operators, so precedence matters.

Is there a language where "- 2^2" gives a different answer than "-2^2"? 
  (Substitute ** or any other exponentiation operator for ^ if you 
like.)  This is important, because I'd like to avoid ever attempting any 
important calculation in that language.

Duncan Murdoch

> Cheers,
> Simon
>
>
>
>> H.
>>
>>> 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
>>>
>>
>> --
>> 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
>



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