The Design and Implementation of Kaleidoscope'90, A Constraint Imperative Programming Language

Authors: Bjorn Freeman-Benson and Alan Borning

Published in Proceedings of the IEEE Computer Society 1992 International Conference on Computer Languages, April 1992, pages 174-180.


Two major paradigms in computer programming languages are imperative and declarative programming. We describe a scheme for languages that integrate specific features from these two paradigms into a new framework: Constraint Imperative Programming. Along with the framework, we discuss the design and implementation of a particular instance of this framework, Kaleidoscope'90. From the imperative paradigm, constraint imperative programming adopts explicit control flow, state, and assignment. From the declarative paradigm, it adopts explicit, system-maintained constraints (relations that should hold). There is a strong practical motivation for making this integration: in a typical application, some portions are most clearly described using imperative constructs, while other portions are most clearly described using constraints. By using a constraint imperative language, the most suitable paradigm can be used as appropriate.

full paper (pdf). (Note: This file is missing one picture that is in the published paper -- a scroll bar -- but you can probably muddle along without it.)

Constraints home page