INC
- 1 April 1991
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 13 (2) , 211-236
- https://doi.org/10.1145/103135.103137
Abstract
An incremental computation is one that is performed repeatedly on nearly identical inputs. Incremental computations occur naturally in many environments, such as compilers, language-based editors, spreadsheets, and formatters. This article describes a proposed tool for making it easy to write incremental programs. The tool consists of a programming language, INC, and a set of compile-time transformations for the primitive elements of INC. A programmer defines an algorithm in INC without regard to efficient incremental execution. The transformations automatically convert this algorithm into an efficient incremental algorithm. INC is a functional language. The implementation of an INC program is a network of processes. Each INC function is transformed into a process that receives and transmits messages describing changes to its inputs and outputs. We give an overview to the language and illustrate the incremental techniques employed by INC. We present the static and incremental complexity bounds for the primitive INC functions. We also present some example programs illustrating INC's flexibility.Keywords
This publication has 20 references indexed in Scilit:
- Proving relative lower bounds for incremental algorithmsActa Informatica, 1990
- Program derivation by fixed point computationScience of Computer Programming, 1989
- Making data structures persistentJournal of Computer and System Sciences, 1989
- Conditions for incremental iteration: Examples and counterexamplesScience of Computer Programming, 1988
- Generating editing environments based on relations and attributesACM Transactions on Programming Languages and Systems, 1986
- Programming with InvariantsIEEE Software, 1986
- Juno, a constraint-based graphics systemACM SIGGRAPH Computer Graphics, 1985
- Incremental Context-Dependent Analysis for Language-Based EditorsACM Transactions on Programming Languages and Systems, 1983
- Finite Differencing of Computable ExpressionsACM Transactions on Programming Languages and Systems, 1982
- Can programming be liberated from the von Neumann style?Communications of the ACM, 1978