Skip to content
0:00 / 0:00

#datafun#datalog#monotonicity

"Datafun: a functional query language" by Michael Arntzenius

Strange Loop Conference

88K subscribers • 107 videos on Hallway • Conference channel

YouTube
  • Recommended by 3 people: 2 on Hacker News and 1 in engineering communities.
  • A classic. People kept recommending it from 2018 to 2025.
  • Presented by Michael Arntzenius

Advanced. Deep dive for people who know the field.

9.1K views9 years ago3 recommendations

Programming languagesDatabases and dataLanguage design and type systemsFunctional programmingDatabase internals

Michael Arntzenius introduces Datafun, a functional programming language that integrates database-style querying using Datalog concepts.

Datafun is a new language exploring the question: What's the simplest way to bring our general-purpose languages closer to our database query languages? At its core, a lot of programming is data munging. Yet our general-purpose programming languages don't make this easy for us. We have to decide in advance how to arrange our data, whether we want it in memory or on disk, what operations we want to be efficient, and so on. Databases are powerful tools for solving these issues, but they involve separating our data from our general programming tools. Yet the walls separating database theory from programming language theory are quite thin. With the right design choices, we can dissolve them entirely. Purity and totality, for example, let us apply many standard database query optimizations to a functional language. Techniques like materialized view maintenance, Datalog's seminaive evaluation, and incremental computation are just different sides of the same coin. This talk will use Datafun as a jumping off point to explore these and other ideas at the intersection of databases and programming languages. Michael Arntzenius UNIVERSITY OF BIRMINGHAM Michael Arntzenius researches the theory, design, and implementation of programming languages. He's interested in types, monotonicity, logic, concurrency and distributed systems; but most of all in simplicity. He's convinced there is still low-hanging fruit left to be plucked in the orchards of language design, if you look in the right places.

Why it's here

3 people recommend this

What people say. Recommended as an approachable introduction to bridging functional programming and database query languages.

u/rain5in r/ProgrammingLanguages • Recommends

"Datafun: a functional query language" by Michael Arntzenius

a-salehon Hacker News • Recommends

On “A relatively simple Datalog engine”

"Streams of solution trees" kinda reminds me of mikro-kanren 1. When I was using Clojure roughly 3 years ago, kanren was quite popular embedded logic. W.r.t. Datafun, i learned about it from a talk its creator gave on strangeloop last year 2, for me it seemed quite approachable :) 1 link 2 link to this video

fogzenon Hacker News • Recommends

On “Implementing Logic Programming”

Yes, for some kinds of operations on some kinds of data structures. The keyword/property is "monotonicity". Monotonic functions are guaranteed to terminate under fixed-point semantics. Look into Datafun: A total functional language that generalizes Datalog. Also be sure to watch Datafun author Michael Arntzenius's Strangeloop talk. link link to this video

u/rotuamiin r/ProgrammingLanguages • Mentions

On “Non-stuttering graph algorithms”

The problem is that reachability is itself stuttery in a general graph. The most elegant answer seems to to (1) construct a spanning tree (2) use that spanning tree to process each node once. To prevent storing the whole spanning tree, split the process into a producer/consumer coroutine. You also don't need to keep track of all visited nodes for the spanning tree - just the edges which separate the "visited" region of the graph from the unvisited. I think that logic programming would appeal to you, along the lines of Prolog. It is very good at expressing non-redundant graph algorithms. Also, check out Datafun, which has a very nice, very general approach (I won't spoil the surprise)!

programming-talkscurated list on GitHubMentions

Under “Compilers/Interpreters”

Datafun: a functional query language 00:42:30 by **Michael Arntzenius** (2017)

u/rotuamiin r/ProgrammingLanguages • Mentions

On “Deconstructing Datalog”

His Strange Loop talk from a few years back is much more accessible. link to this video It definitely changed the way I think about programming!

tracnaron Hacker News • Mentions

On “Why Can't Database Tables Index Themselves? (2006)”

This talk explored a bit that idea, you could have a (full) programming language which is more like SQL so you get good enough datastructures (and indexing- without manual tuning: link to this video I think Prolog (another commenter pointed it out) and datalog do this to some extend.

refseton Hacker News • Mentions

On “Deconstructing Datalog [pdf]”

Thanks for sharing the summary. There's also this Strange Loop 2017 talk "Datafun: a functional query language" with an early overview of this research: link to this video