Reference. Datafun: a functional Datalog
Cite
Cited by (1)
Seminaïve evaluation for a higher-order functional language arntzenius-2019-seminaive
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.
Cites 33 works (3 here)
With notes (3)
Complete and easy bidirectional typechecking for higher-rank polymorphism dunfield-2013-complete
A judgmental reconstruction of modal logic pfenning-2001-a
Linear logic girard_linear_1987
The familiar connective of negation is broken into two operations: linear negation which is the purely negative part of negation and the modality “of course” which has the meaning of a reaffirmation. Following this basic discovery, a completely new approach to the whole area between constructive logics and programmation is initiated.
External (30)
- From Datalog to flix: a declarative language for fixed points on lattices (2016)
- Design and Implementation of the LogicBlox System (2015)
- Relational algebra by way of adjunctions (2015)
- Multilinear programming with big data (2014)
- Query shredding: efficient relational evaluation of queries over nested multisets (2014)
- A practical theory of language-integrated query (2013)
- Consistency analysis in Bloom: a CALM and collected approach (2011)
- Functional logic programming (2010)
- Type inference for datalog with complex type hierarchies (2010)
- SecPAL: Design and semantics of a decentralized authorization language (2010)
- Linear logical approximations (2009)
- FERRY: database-supported program execution (2009)
- .QL: Object-Oriented Queries Made Easy (2008)
- Context-Sensitive Pointer Analysis using Binary Decision Diagrams (PhD thesis) (2007)
- Using Datalog with Binary Decision Diagrams for Program Analysis (2005)
- The Reasoned Schemer (2005)
- Logical algorithms (2002)
- Local type inference (2000)
- Kleisli, a functional query system (2000)
- Definitional Interpreters for Higher-Order Programming Languages (1998)
- Linear logic, monads and the lambda calculus (1996)
- Domain Theory (1995)
- Principles and implementation of deductive parsing (1995)
- The implementation of Mercury, an efficient purely declarative logic programming language (1994)
- Symbolic Boolean manipulation with ordered binary-decision diagrams (1992)
- The revised report on the syntactic theories of sequential control and state (1992)
- Database programming in Machiavelli—a polymorphic language with static type inference (1989)
- Magic sets and other strange ways to implement logic programs (extended abstract) (1985)
- Logic and Data Bases (Gallaire & Minker, eds.) (1978)
- Datomic: The fully transactional, cloud-ready, distributed database (website)