一句话:提出 Hazel Lab,将渐进类型的标签化元组表与 live typing、rich probes 结合,使表操作支持数据依赖的列模式并保留编辑器支持。
面向表格数据的编程系统(电子表格、计算 notebook)因缺少静态类型而限制了可提供的编辑器支持,尤其当代码组织为可复用函数时;而静态类型替代方案又难以表达列模式依赖数据的操作,如透视、unstack 与 one-hot 编码。本文提出 Hazel Lab,作为活渐进类型函数式环境 Hazel 的扩展:把表视为带标签元组的序列,引入若干渐进类型操作(含字段名与字符串互转),尽力做静态类型检查,无法静态确定模式时回退到 unknown 类型。为在回退时改进类型反馈与错误定位,作者提出 live typing,将运行时观察到的 unknown 类型实例化反馈给静态检查器,与既有 live probes 的动态反馈互补;并以带表格视图的 rich probes 支持通过直接操控编辑数据管道。基于 B2T2 基准,系统能合理表达全部示例;7 名参与者的实验室研究显示,表格操作可有效用于数据清洗与转换,live typing 有助于理解与调试现有分析。
Programming systems tailored for working with tabular data ( tabular programming systems ), such as spreadsheets and computational notebooks, are essential tools in data science. However, widely adopted systems are limited by the absence of static typing, which restricts the editor support they can provide, particularly when code is organized into reusable functions. Statically typed alternatives are limited by the fact that many useful operations on tables produce results whose column schema is data-dependent, e.g. pivots, unstack operations, or one-hot encodings. This paper introduces Hazel Lab , a new tabular programming system built as an extension of Hazel, a live gradually typed functional programming environment. It aims to combine the expressivity of dynamically typed systems with the editor support of static typing by incorporating several novel mechanisms into Hazel. Tables are manipulated as sequences of labeled tuples, and we add several useful gradually typed operations on labeled tuples to increase expressiveness, including operations that convert field names to and from strings. These operations support best-effort static typing and fall back to the unknown type when a schema cannot be statically determined. We evaluate the expressiveness of these core abstractions using the Brown Benchmark For Table Types (B2T2), finding that Hazel Lab is able to reasonably express every example. In order to improve type-based feedback, including error localization, when the fallback to the unknown type is needed, we introduce live typing , which builds on the fact that Hazel is a maximally live programming environment, even when there are static errors in the code, to feed dynamically observed instantiations of statically unknown types back into the static type checker. This feedback is complementary to the dynamic feedback that Hazel already distinctively provides by way of its live probes. We introduce rich probes—an extension of live probes with domain-specific table views that allow users to edit their functional data pipelines through direct manipulation interactions. We evaluate the usability of our overall design by conducting a lab study with 7 participants, asking them to perform a variety of data cleaning and analysis tasks. The study evaluates the usability and usefulness of the proposed features for users already familiar with statically typed functional programming, rather than to assess transfer to data science workflows by scientists without that training. We find that participants could effectively use the table operations for data cleaning and transformation tasks, and that live typing helped them both understand and debug existing analyses. Most participants responded positively to adopting the evaluated features in their own programming environments, with none responding negatively.
@article{paperbot12159,
title = {Interactive Data Analysis with Lively Typed Tables},
author = {Alexander Bandukwala and Cyrus Omar},
journal = {Proceedings of the ACM on Programming Languages},
volume = {10},
number = {OOPSLA2},
year = {2026},
doi = {10.1145/3839501}
}