[R] Lisp-like primitives in R

Peter Dalgaard p.dalgaard at biostat.ku.dk
Sat Sep 8 10:34:08 CEST 2007


François Pinard wrote:
> [Roland Rau]
>   
>> [François Pinard]
>>     
>
>   
>>> I wonder what happened, for R to hide the underlying Scheme so fully, 
>>> at least at the level of the surface language (despite there are 
>>> hints).  
>>>       
>
>   
>> "To further foster portability, we chose to write R in ANSI C...."
>>     
>
> Yes, of course.  Scheme is also (often) implemented in C.  I meant that 
> R might have implemented a Scheme engine (or part of a Scheme engine, 
> extended with appropriate data types) with a surface language (nearly 
> the S language) which is purposely not Scheme, but could have been.
>
> If the gap is not extreme, one could dare dreaming that the Scheme 
> engine in R be "completed", and Scheme offered as an alternate extension 
> language.  If you allow me to continue dreaming awake -- "they" told me 
> "they" will let me free as long as I do not get dangerous! :-) -- part 
> of the interest lies in the fact there are excellent Scheme compilers.  
> If we could only find or devise some kind of marriage between a mature 
> Scheme and R, so to speed up the non-vectorisable parts of R scripts...
>
>   
Well, depending on what you want, this is either trivial or 
impossible... The internal storage of R is still pretty much equivalent 
to scheme. E.g. try this:

 > r2scheme <- function(e) if (!is.recursive(e))
      deparse(e) else c("(", unlist(lapply(as.list(e), r2scheme)), ")")
 > paste(r2scheme(quote(for(i in 1:4)print(i))), collapse=" ")
[1] "( for i ( : 1 4 ) ( print i ) )"

and a parser that parses a similar language to R internal format is  not 
a very hard exercise (some care needed in places). However, replacing 
the front-end is not going to make anything faster, and the evaluation 
engine in R does a couple of tricks which are not done in Scheme, 
notably lazy evaluation, and other forms of non-local evaluation, which 
drives optimizers crazy. Look up the writings of Luke Tierney on the 
matter to learn more.

>> If we are lucky and one of the original authors reads this thread they 
>> might explain the situation further and better [...].
>>     
>
> In r-devel, maybe!  We would be lucky if the authors really had time to 
> read r-help. :-)
>
>   


-- 
   O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
  c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
 (*) \(*) -- University of Copenhagen   Denmark          Ph:  (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)                  FAX: (+45) 35327907



More information about the R-help mailing list