Conference paper Open Access

Designing Types for R, Empirically

Alexi; Aviral; Filip; Jan

The R programming language is widely used in a variety of domains. It was designed to favor an interactive style of programming with minimal syntactic and conceptual overhead. This design is well suited to interactive data analysis, but a bad fit for tools such as compilers or program analyzers which must generate native code or catch programming errors. In particular, R has no type annotations, and all operations are dynamically checked at run-time. The starting point for our work are the twin questions: what expressive power is needed to accurately type R code? and which type system is the R community willing to adopt? Both questions are difficult to answer without actually experimenting with a type system. The goal of this paper is to provide data that can feed into that design process. To this end, we perform a large corpus analysis to gain insights in the degree of polymorphism exhibited by idiomatic R code and explore potential benefits that the R community could accrue from a simple type system. As a starting point, we infer type signatures for 25,215 functions from 412 packages among the most widely used open source R libraries. We then conduct an evaluation on 8,694 clients of these packages, as well as on end-user code found on the Kaggle competition website.

Files (36.3 MB)
Name Size
artifact-overview.pdf
md5:158f5e267c31453720aa1a702b1b48a7
297.4 kB Download
OOPSLA20-typer-artifact.tar.gz
md5:ab3395366668d7daad4b0a23b13ce406
36.0 MB Download
135
83
views
downloads
All versions This version
Views 135135
Downloads 8383
Data volume 310.2 MB310.2 MB
Unique views 124124
Unique downloads 7070

Share

Cite as