Abstract
R is an environment and functional programming language for statistical data analysis and visualization. Largely unknown to the functional programming community, it is popular and influential in many empirical sciences. Due to its integrated combination of dynamic and reflective scripting on one hand, and array-based numerical computation on the other, R poses unique and challenging implementation problems, at odds with the conservative language technology employed by its developers. We discuss the background of R in historical context, highlight some of the more problematic language features, and discuss the potential for the effective use of state-of-the-art language technology in a future, safe and efficient implementation.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Ancona, D., Ancona, M., Cuni, A., Matsakis, N.D.: RPython: a step towards reconciling dynamically and statically typed OO languages. In: DLS. ACM, Montreal (2007) ISBN: 978-1-59593-868-8, doi:10.1145/1297081.1297091
Barr, A.J., Goodnight, J.H.: SAS, Statistical Analysis System. North Carolina State University (1971)
Bebenita, M., et al.: SPUR: a trace-based JIT compiler for CIL. In: OOPSLA. ACM, Reno/Tahoe (2010) ISBN: 978-1-4503-0203-6, doi:10.1145/1869459.1869517
Bolz, C.F., Cuni, A., Fijalkowski, M., Leuschel, M., Pedroni, S., Rigo, A.: Allocation removal by partial evaluation in a tracing JIT. In: Khoo, S.-C., Siek, J.G. (eds.) Partial Evaluation and Program Manipulation (PEPM 2011). ACM, Austin (2011) ISBN: 978-1-4503-0485-6
Bolz, C.F., Cuni, A., Fijalkowski, M., Leuschel, M., Rigo, A., Pedroni, S.: Runtime Feedback in a Meta-Tracing JIT for Efficient Dynamic Languages. In: ICOOOLPS. ACM, Lancaster (2011)
Bolz, C.F., Cuni, A., Fijalkowski, M., Rigo, A.: Tracing the meta-level: PyPy’s tracing JIT compiler. In: ICOOOLPS, pp. 18–25. ACM, Genova (2009) ISBN: 978-1-60558-541-3, doi:10.1145/1565824.1565827
Bolz, C.F., Leuschel, M., Schneider, D.: Towards a Jitting VM for Prolog execution. In: PPDP. ACM, Hagenberg (2010) isbn: 978-1-4503-0132-9, doi:10.1145/1836089.1836102
Brunthaler, S.: Efficient interpretation using quickening. SIGPLAN Not. 45(12), 1–14 (2010) ISSN: 0362-1340, http://doi.acm.org/10.1145/1899661.1869633 , doi:10.1145/1899661.1869633
Chambers, J.M.: Stages in the Evolution of S. Bell Labs (2000), http://cm.bell-labs.com/cm/ms/departmen
Chambers, J.M., Becker, R.A.: An Interactive Environment for Data Analysis and Graphics. Wadsworth & Brooks/Cole (1984) ISBN: 0-534-03313-X
Chambers, J.M., Becker, R.A.: Extending the S System. Wadsworth & Brooks/ Cole (1985) ISBN: 0-534-05016-6
Chambers, J.M., Becker, R.A.: The New S Language: A Programming Environment for Data Analysis and Graphics. Wadsworth & Brooks/Cole (1988) isbn: 0-534-09192-X
Chambers, J.M., Hastie, T.: Statistical Models in S. Wadsworth & Brooks/- Cole (1991) ISBN: 0-412-05291-1
Gal, A., et al.: Trace-based just-in-time type specialization for dynamic languages. In: PLDI 2009. ACM ID: 1542528. ACM, New York (2009) ISBN: 978-1-60558-392-1, doi:10.1145/1542476.1542528
Gentleman, R., Ihaka, R.: Lexical Scope and Statistical Computing. Journal of Computational and Graphical Statistics 9, 491–508 (2000)
Grelck, C.: Shared memory multiprocessor support for functional array processing in SAC. Journal of Functional Programming 15(3), 353–401 (2005)
Grelck, C., Scholz, S.-B.: SAC: A Functional Array Language for Efficient Multithreaded Execution. International Journal of Parallel Programming 34(4), 383–427 (2006)
Guo, J., Thiyagalingam, J., Scholz, S.-B.: Breaking the GPU programming barrier with the auto-parallelising SAC compiler. In: Annual Symposium on Principles of Programming Languages, 6th Workshop on Declarative Aspects of Multicore Programming (DAMP 2011), pp. 15–24. ACM Press, Austin (2011)
Milborrow, S.: The Ra Extension to R (2011), http://www.milbo.users.sonic.net/ra/
Morandat, F., Hill, B., Osvald, L., Vitek, J.: Evaluating the Design of the R Language. In: Noble, J. (ed.) ECOOP 2012. LNCS, vol. 7313, pp. 104–131. Springer, Heidelberg (2012)
Nie, N., Bent, D.H., Hull, C.H.: SPSS: statistical package for the social sciences. McGraw–Hill (1970) ISBN: 0-070-46530-4
R-bloggers. You can scrap it and write something better but let me keep R (2011), http://www.r-bloggers.com/you-can-scrap-it-and-write-something-better-but-let-me-keep-r/ (visited on August 21, 2011).
Language Definition, R.: R Development Core Team (2010) ISBN: 3-900051-13-5
Rigo, A., Pedroni, S.: PyPy’s approach to virtual machine construction. In: Portland, D. (ed.) DLS. ACM, Portland (2006) ISBN: 1-59593-491-X, doi:10.1145/1176617.1176753
The Comprehensive R Archive Network, http://cran.r-project.org
Vance, A.: Data Analysts Captivated by R’s Power. In: New York Times. Business Computing (January 9, 2009)
Wieser, V., Grelck, C., Haslinger, P., Guo, J., et al.: Combining High Productivity and High Performance in Image Processing Using Single Assignment C on Multicore CPUs and Many-core GPUs. J. Electronic Imaging (to appear)
Wilson, A.: ACM honors Dr. John M. Chambers of Bell Labs with the 1998 ACM Software System Award for creating ‘S System’ software. In: ACM Press Release (March 1999)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2013 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Widemann, B.T.y., Bolz, C.F., Grelck, C. (2013). The Functional Programming Language R and the Paradigm of Dynamic Scientific Programming. In: Loidl, HW., Peña, R. (eds) Trends in Functional Programming. TFP 2012. Lecture Notes in Computer Science, vol 7829. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-40447-4_12
Download citation
DOI: https://doi.org/10.1007/978-3-642-40447-4_12
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-40446-7
Online ISBN: 978-3-642-40447-4
eBook Packages: Computer ScienceComputer Science (R0)