Wacek Kusnierczyk wrote:
Romain Francois wrote:
Duncan Murdoch wrote:
That is an issue. I guess I will fall back on what the parser says and
infer on the scoping. Within the lines below, mean would be different
each time
mean( 1:10 )
lapply( 1:10, mean)
mean <- (1+4) / 2
lapply( list( mean, median), function( f ) f( 1:10) )
{ mean <- median; mean( 1:10 ) }
So if you've got high standards, it's probably quite hard. On the
other hand, if you're willing to accept the usual sort of errors that
syntax highlighters make, it's not so bad, but not trivial.
it would be good to know what you mean by 'errors'. syntax highlighters
are, in principle, *syntax* highlighters. in the example above, the
first and sixth occurrences of 'mean' are in the operator position, the
others are not -- would it be *syntactically* inappropriate to
color-code the former in one way, and the latter in another?
It would certainly be useful to make a difference between the first one
(call to the mean function from base) and the last one.
If we have sufficient evidence of where the function lives, it would be
useful for the syntax highlighter to present this evidence.
I'd like to see function highlighted differently for:
- function in standard R packages
- function exported from the NAMESPACE of the package being highlighted
- function not exported from the NAMESPACE
- function which belongs to a package on which this one depends
It makes the job trivial if we just don't care and put all function
calls to the same basket.
But because of scoping rules, and tricks, there are going to be errors.
f <- function( ){
assign( "mean", median )
mean( 1:10)
}
f <- function( ){
assign( paste("m", "e", "a", "n", sep = ""), median )
mean( 1:10)
}
f <- function( ){
eval( parse( text = 'assign( paste("m", "e", "a", "n", sep = ""),
median )') )
mean( 1:10)
}
... and so on.
why should
a *syntax* highlighter care about what's the object referred to by
'mean' in this or other context?
otherwise, it would certainly be fun to have a semantic highlighter for r.
(..)
(I'd guess it'll be fast enough: Brian Ripley reported that all the R
code he wrote for conversions in R-devel was faster than the Perl
code it was replacing.)
the 'benchmark' you are talking about is only as good as the perl
scripts were. i have had a look at a couple of perl scripts in the r
sources, and it seemed like there was quite some space for improvement.
vQ
--
Romain Francois
Independent R Consultant
+33(0) 6 28 91 30 30
http://romainfrancois.blog.free.fr
______________________________________________
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.