Kaleidoscope (programming language)
Appearance
The Kaleidoscope programming language is a constraint programming language embedding constraints into an imperative object-oriented language. It adds keywords always, once, and assert..during (formerly while..during) to make statements about relational invariants. Objects have constraint constructors, which are not methods, to enforce the meanings of user-defined datatypes.
There are three versions of Kaleidoscope which show an evolution from declarative to an increasingly imperative style. Differences between them are as follows.[1]
Kaleidoscope'90 | Kaleidoscope'91 | Kaleidoscope'93 | |
---|---|---|---|
Constraint Evaluation | Lazy | Eager | Eager |
Variables | Hold streams | Hold streams | Imperative |
Concurrent Constraints | Strict | Strict | Non-strict |
Syntax | Smalltalk-like | Algol-like | Algol-like |
Constraint Model | Refinement | Refinement | Perturbation |
Method Dispatching | Single | Multiple | Multiple |
Assignment | As a constraint | As a constraint | Destructive |
References
- Lopez, Gus (1994). "Kaleidoscope: A Constraint Imperative Programming Language". Constraint Programming. Springer-Verlag. pp. 313โ329.
{{cite book}}
: Unknown parameter|coauthors=
ignored (|author=
suggested) (help) - Marriot, Kim (1998). Programming with constraints: An introduction. MIT Press.
{{cite book}}
: Unknown parameter|coauthors=
ignored (|author=
suggested) (help) ISBN 0-262-13341-5