>>>>> Duncan Murdoch <murd...@stats.uwo.ca> >>>>> on Tue, 01 Sep 2009 08:02:57 -0400 writes:
> On 9/1/2009 6:37 AM, (Ted Harding) wrote: >> On 01-Sep-09 10:25:53, Duncan Murdoch wrote: >>> Jim Lemon wrote: >>>> Duncan Murdoch wrote: >>>>> On 8/31/2009 11:50 AM, Mark Knecht wrote: >>>>> On Mon, Aug 31, 2009 at 6:36 AM, Terry Therneau<thern...@mayo.edu> >>>>> wrote: >>>>> <SNIP> >>>>>>> The authors borrowed so much else from C, the semicolon would have >>>>>>> been good too. >>>>>>> >>>> Something I have thought myself. >>>> >>>>> I know real R coders will chuckle >>>>> >>>>> I'd say cringe, rather than chuckle. This is going to make you waste >>>>> a lot of time some day, when you stare and stare at code like Terry's >>>>> and can't figure out what's wrong with it: >>>>> >>>>> zed <- function(x,y,z) { >>>>> x + y >>>>> +z; >>>>> } >>>>> >>>>> The value of the function is +z, not x+y+z, even though the C part of >>>>> your brain made you type it that way and reads it as one statement in >>>>> the body, not two. >>>>> >>>> This is getting interesting. One habit I have developed in R to >>>> emphasize a line continuation is to always write the above as: >>>> >>>> zed<-function(x,y,z) { >>>> x+y+ >>>> z >>>> } >>>> >>> >>> That's a good habit. An alternative is to put parentheses around the >>> expression: >>> >>> (x + y >>> + z) >>> >>> will work. >>>> The trailing operator signalling to me and the interpreter that >>>> there's more to come. A semicolon after the z would be innocuous. >>>> Now I know that this marks me as a crabby old fart who learned >>>> to program on Hollerith cards where there had to be firm >>>> conventions on when a line of code ended. Still, given the moiety >>>> of global warming attributable to endless discussions about how >>>> many spaces should be used for indentation, I think the use of >>>> the semicolon as a personal aid to interpretation is at worst a >>>> harmless affectation. >>> >>> I think it's worse. To me, it's like putting in a comment that is >>> wrong, or writing code like this: >>> >>> one <- 2 >>> x <- x + one >>> >>> Code has meaning, it's not just a bunch of binary instructions to the >>> computer. If the meaning and the look of the code clash, it is going >>> to lead to problems. >>> >>> Duncan Murdoch >> >> And surely that is precisely the point of Jim's use of ";"! >> It is, in effect, ignored by R; but to Jim it means "This marks the >> end of a command." Surely useful, and surely not in the same league >> as "a comment that is wrong". You may see it as noise, but then >> you can filter it out. > I think you're missing the point. Using C-like syntax in R is > misleading because you will think it has C-like meaning. You will read > x + y > + z; > as one statement, not two. (Actually you could argue that in R there are > three statements there, but the third one is empty). > This is harmful in the same way using misleading variable names is > harmful: as long as you're paying attention you'll get it right, but > when you are working on a hard problem and can't devote enough neurons > to this particular task, you'll get it wrong, and have a hard-to-spot > bug in your code. You'll decide you need to split a statement across > two lines, and write it in C style like the statements above, instead of > in correct R syntax. > Duncan Murdoch I very strongly agree with Duncan on his very points. In addition, note that the extra noise ("horrible end line ';'") not only adds to the global warming ;-) but also slightly slows the parsing and hence total execution time of your code ... even more global warming ... Martin Maechler >> As one COF to another, I have to say that Jim's posting took me >> back to the early days of my own evolution. That was dandy! >> (Dinosaurs are not dead yet). >> >> Ted. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.