Finite Functional Programming
Michael Arntzenius, Max Willsey

TL;DR
This paper introduces finite functional programming, unifying functional and logic programming through finitely supported functions, enabling representation as input-output tables and supporting aggregation and weighted logic.
Contribution
It presents a novel framework that combines finitely supported functions with higher order functions, along with a type system for support checking.
Findings
Finite support allows representing functions as input-output tables.
Generalization to pointed sets handles aggregation and weighted logic.
A simple type system checks finite support using graded effects and relevance types.
Abstract
We unify functional and logic programming by treating predicatesas functions equipped with their support: the set of inputs whose output is nonzero. Datalog, for instance, is a language of finitely supported boolean functions. Finite support allows representing functions as input-output tables. Generalizing from boolean functions to other pointed sets neatly handles aggregation and weighted logic programming. We refer to the combination of finitely supported functions, represented as data, with higher order functions, represented as code, as finite functional programming. We give a simple type system to check finite support, using graded effects to check variable grounding and relevance types to model pointed sets.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
