I remember once years ago freaking my colleagues out with a largish app written in R... with nary a loop anywhere.
That's a feature of functional languages, a class that also includes Scheme and XSLT. The basic idea is that programs should not have state, because state makes them harder to debug. A for or while loop, by definition, has state, so you have to do your iteration some other way, namely Tail Recursion.
I suppose that makes sense, but I've never been able to teach myself to think that way. It's the main reason I never managed to get through The Wizard Book.
R has a scheme-like lower layer but it feels more like APL with its array manipulation capabilities than Scheme. It does not support tail recursion.
This Ryacas interface includes a partial recursive decent R parser that translates R code to yacas code and an XML-based OpenMath connection in the other direction. Communication is via sockets. See
Unlike Sage, symbolic computation is not really the focus of R but R does have 1000+ free addon packages including interfaces to numerous other free and commercial systems. The addon packages are listed in these repositories which focus on general items, interfacing and biology, respectively:
I remember once years ago freaking my colleagues out with a largish app written in R... with nary a loop anywhere.
That's a feature of functional languages, a class that also includes Scheme and XSLT. The basic idea is that programs should not have state, because state makes them harder to debug. A for or while loop, by definition, has state, so you have to do your iteration some other way, namely Tail Recursion.
I suppose that makes sense, but I've never been able to teach myself to think that way. It's the main reason I never managed to get through The Wizard Book.
R has a scheme-like lower layer but it feels more like APL with its array manipulation capabilities than Scheme. It does not support tail recursion.
Regarding interfacing with R note that R itself can do minimal symbolic
differentiation out-of-the-box as shown by this sample R session:
> deriv(expression(x^2))
2 * x
and has a partially developed interface with yacas via the addon package Ryacas.
After installing Ryacas and yacas this R code works:
> library(Ryacas)
> x = Sym("x")
> deriv(x^2)
expression(2 * x)
This Ryacas interface includes a partial recursive decent R parser that translates
R code to yacas code and an XML-based OpenMath connection in the other direction.
Communication is via sockets. See
http://ryacas.googlecode.com/
Unlike Sage, symbolic computation is not really the focus of R but R does have
1000+ free addon packages including interfaces to numerous other free and
commercial systems. The addon packages are listed in these repositories which
focus on general items, interfacing and biology, respectively:
http://cran.r-project.org/
http://www.omegahat.org/
http://www.bioconductor.org/
Also there is a graphics gallery with sample R graphics:
http://addictedtor.free.fr/graphiques/
The R home page can be found by entering the single letter R into google.