Most programming is data munging. Yet in practice, our data often sits sequestered in a database, separated from our supposedly “general-purpose” programming languages. Techniques like ORM and LINQ aim to bridge the gap between programming languages and databases. But what if there was no gap? Datafun is a new language exploring the question: What’s the simplest way to bring our general-purpose languages closer to database query languages? It reimagines the venerable deductive query language Datalog as a pure, total, functional programming language. Besides relational queries, Datafun can concisely express graph queries, static analyses, and even parsing; yet it remains amenable to powerful implementation and optimisation techniques from the database world. In this presentation I’ll cover how Datafun combines ideas from functional programming and databases; discuss how cross-pollination of fields leads to fresh insights on old problems; and discuss cutting-edge industry-led research on join algorithms (and why I can’t use it).
Michael Arntzenius studies programming languages, in theory and practice.