Tomas Petricek, University of Kent
tomas@tomasp.net | @tomaspetricek
What is this
talk about?
Making facts great again!
Making simple data exploration accessible to non-experts
Will deep net make
my work obsolete?
Machine learning
Solving hard problems!
Programming languages
Change how we think!
Language that understands data
All programming using just 'dot'
Powered by fancy type theory
Can non-experts use this?
Row types to track names and types of fields
\[\definecolor{cc}{RGB}{255,255,102} \frac {\Gamma \vdash e : {\color{cc}[f_1:\tau_1, \ldots, f_n:\tau_n]}} {\Gamma \vdash e.\text{drop}~f_i : {\color{cc} [f_1:\tau_1, \ldots, f_{i-1}:\tau_{i-1}, f_{i+1}:\tau_{i+1}, \ldots, f_n:\tau_n]}}\]
Embed row types in provided nominal types
\[\frac {\Gamma \vdash e : {\color{mc} C_1}} {\Gamma \vdash e.\text{drop}~f_i : {\color{mc} C_2}} \quad{\small \text{where}}\]
\[\begin{array}{l} {fields({\color{mc} C_1}) = {\color{mc} \{f_1:\tau_1, \ldots, f_n:\tau_n\}}}\\[-0.25em] {fields({\color{mc} C_2}) = {\color{mc} \{f_1:\tau_1, \ldots, f_{i-1}:\tau_{i-1}, f_{i+1}:\tau_{i+1}, \ldots, f_n:\tau_n\}}} \end{array}\]
Programs as lists of interactions
Program by choosing from a list
Forget concrete syntax
Focus on data science
Standard coding
Access member
Invoke operation
Define a value
Programming process
Evaluate component
Refactor as function
Type checking lists of interactions
Evaluation can affect types
Bind interactions to user interface
Multiple views for the same program
Takes 80% of data analyst's time
Tedious manual process
Obtaining and merging data
Fixing and resolving ambiguities
Wrattler project
Research extension for JupyterLab
Mix languages, build interactive tools, analyse code provenance
AI assistant works with
AI assistant is defined by
Patches and constraints
Optimization-based datadiff assistant
Programming by choosing from a list
Works with text or user interface
Works for data querying
Works for data wrangling tools
Programming language design
Design new ways of thinking about problems
Theoretical approach
Constraints are good for innovation
Iterative prompting
Can you do anything this way?
Tomas Petricek, University of Kent
tomas@tomasp.net | @tomaspetricek