On 05/07/2014 02:55 PM, Simon Urbanek wrote:
On May 7, 2014, at 5:41 PM, Hervé Pagès <hpa...@fhcrc.org> wrote:
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.
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".
Yes, there is an precedent where space matters. I just hope you're not
saying you'd like to see that repeated for "-2" vs "- 2".
So, again, if -2 is a value then there is no precedence issue, since you have only operator in
"-2 ^ y" namely "^".
If you make -2 a value, then yes you *effectively* change precedence
from a user point of view. You can be picky about terminology and argue
that it's not an "operator precedence" issue because there is no
operator involved but that doesn't change the fact that now it's a very
bad idea. I can't believe serious programmers are discussing ways to
make -2^2 return 4.
H.
In "- 2 ^ y" you have two operators, so precedence matters.
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@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
--
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