Jump to content

Kaleidoscope (programming language)

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Pscion (talk | contribs) at 04:36, 11 February 2013 (added table, some highlights). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

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
  • ^ www.cs.washington.edu/research/constraints/cip/kaleidoscope-asi.pdf