Finite Functional Programming

Fuente: arXiv
Saved in:
Bibliographic Details
Main Authors: Arntzenius, Michael, Willsey, Max
Format: Preprint
Published: 2026
Subjects:
Online Access:
Tags: Add Tag
No Tags, Be the first to tag this record!
_version_ 1866918472882061312
author Arntzenius, Michael
Willsey, Max
author_facet Arntzenius, Michael
Willsey, Max
contents 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.
format Preprint
id arxiv_https___arxiv_org_abs_2604_26161
institution arXiv
publishDate 2026
record_format arxiv
spellingShingle Finite Functional Programming
Arntzenius, Michael
Willsey, Max
Programming Languages
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.
title Finite Functional Programming
topic Programming Languages
url https://arxiv.org/abs/2604.26161