Sat 22 Jun 2019 14:30 - 15:00 at 106C - Session 4 Chair(s): Tze Meng Low

In a rank-polymorphic programming language, all functions automatically lift to operate on arbitrarily high-dimensional aggregate data. By adding records to such a language, we can support computation on data frames, a tabular data structure containing heterogeneous data but in which individual columns are homogeneous. In such a setting, a data frame is a vector of records, subject to both ordinary array operations (e.g., filtering, reducing, sorting) and lifted record operations—projecting a field lifts to projecting a column. Data frames have become a popular tool for exploratory data analysis, but fluidity of interacting with data frames via lifted record operations depends on how the language’s records are designed. We investigate three languages with different notions of record data: Racket, Standard ML, and Python. For each, we examine several common tasks for working with data frames and how the language’s records make these tasks easy or hard. Based on their advantages and disadvantages, we synthesize their ideas to produce a design for record types which is flexible for both scalar and lifted computation.

Sat 22 Jun

Displayed time zone: Tijuana, Baja California change

14:00 - 15:30
Session 4ARRAY at 106C
Chair(s): Tze Meng Low CMU
14:00
30m
Talk
TeIL: a type-safe imperative Tensor Intermediate Language
ARRAY
Norman A. Rink TU Dresden, Germany, Jeronimo Castrillon TU Dresden, Germany
14:30
30m
Talk
Records with Rank Polymorphism
ARRAY
A: Justin Slepak Northeastern University, A: Olin Shivers Northeastern University, USA, A: Panagiotis Manolios Northeastern University
15:00
30m
Talk
Data-Parallel Flattening by Expansion
ARRAY
Martin Elsman University of Copenhagen, Denmark, Troels Henriksen University of Copenhagen, Denmark, Niels G. W. Serup DIKU, University of Copenhagen