On the design, implementation, and use of laziness in R

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.

Document Details

Document Type
Pub Defense Publication
Publication Date
Oct 10, 2019
Source ID
10.1145/3360579

Entities

People

  • Aviral Goel
  • Jan Vitek

Organizations

  • Czech Technical University in Prague
  • Framework Programmes for Research and Technological Development
  • Ministry of Education, Youth and Sports
  • National Science Foundation
  • Northeastern University
  • Office of Naval Research

Tags

Fields of Study

  • Computer science

Readers

  • Computational Linguistics
  • Software Engineering
  • Systems Analysis and Design