Affiliation:
1. Northeastern University, USA
2. Czech Technical University, Czechia / Northeastern University, USA
Abstract
The R programming language has been lazy for over twenty-five years. This paper presents a review of the design and implementation of call-by-need in R, and a data-driven study of how generations of programmers have put laziness to use in their code. We analyze 16,707 packages and observe the creation of 270.9 B promises. Our data suggests that there is little supporting evidence to assert that programmers use laziness to avoid unnecessary computation or to operate over infinite data structures. For the most part R code appears to have been written without reliance on, and in many cases even knowledge of, delayed argument evaluation. The only significant exception is a small number of packages which leverage call-by-need for meta-programming.
Funder
Office of Naval Research
Horizon 2020
Czech Ministry of Education, Youth and Sports
National Science Foundation
Publisher
Association for Computing Machinery (ACM)
Subject
Safety, Risk, Reliability and Quality,Software
Cited by
7 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. On the Anatomy of Real-World R Code for Static Analysis;Proceedings of the 21st International Conference on Mining Software Repositories;2024-04-15
2. signatr: A Data-Driven Fuzzing Tool for R;Proceedings of the 15th ACM SIGPLAN International Conference on Software Language Engineering;2022-11-29
3. What we eval in the shadows: a large-scale study of eval in R programs;Proceedings of the ACM on Programming Languages;2021-10-20
4. Promises are made to be broken: migrating R to strict semantics;Proceedings of the ACM on Programming Languages;2021-10-20
5. First-class environments in R;Proceedings of the 17th ACM SIGPLAN International Symposium on Dynamic Languages;2021-10-19