Repository logo
 

Seminaïve evaluation for a higher-order functional language

Published version
Peer-reviewed

Type

Article

Change log

Authors

Arntzenius, M 

Abstract

© 2020 Copyright held by the owner/author(s). One of the workhorse techniques for implementing bottom-up Datalog engines is seminaïve evaluation. This optimization improves the performance of Datalog's most distinctive feature: recursively defined predicates. These are computed iteratively, and under a naïve evaluation strategy, each iteration recomputes all previous values. Seminaïve evaluation computes a safe approximation of the difference between iterations. This can asymptotically improve the performance of Datalog queries. Seminaïve evaluation is defined partly as a program transformation and partly as a modified iteration strategy, and takes advantage of the first-order nature of Datalog code. This paper extends the seminaïve transformation to higher-order programs written in the Datafun language, which extends Datalog with features like first-class relations, higher-order functions, and datatypes like sum types.

Description

Keywords

Datafun, Datalog, functional languages, relational languages, seminaive evaluation, incremental computation

Journal Title

Proceedings of the ACM on Programming Languages

Conference Name

Journal ISSN

2475-1421
2475-1421

Volume Title

4

Publisher

Association for Computing Machinery (ACM)