On 05/07/2014 02:01 PM, peter dalgaard wrote:

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

On May 7, 2014, at 3:37 PM, Hervé Pagès <hpa...@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.

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@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

______________________________________________
R-devel@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: hpa...@fhcrc.org
Phone:  (206) 667-5791
Fax:    (206) 667-1319

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


______________________________________________
R-devel@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: hpa...@fhcrc.org
Phone:  (206) 667-5791
Fax:    (206) 667-1319

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to