Kaleidoscope: mixing objects, constraints, and imperative programming

Abstract
Kaleidoscope is an object-oriented language being designed to integrate the traditional imperative object-oriented paradigm with the less traditional declarative constraint paradigm. Imperative state changes provide sequencing while declarative constraints provide object relations. A variables as streams semantics enables the declarative-imperative integration. A running example is used to illustrate the language concepts—a reimplementation of the MacDraw II dashed-lines dialog box. The example is in three parts: the input channel, using imperative code to sequence through modes; the output channel, using constraints to update the display; and the internal relations, using constraints to maintain the data objects' consistency requirements. The last sections of the paper discuss views as a natural result of combining objects with constraints, as well as related and future work.

This publication has 11 references indexed in Scilit: