カレイドスコープ(プログラミング言語)

Kaleidoscopeプログラミング言語は、命令型オブジェクト指向言語に制約を埋め込んだ制約プログラミング言語です。キーワードalwaysonceassert .. during(旧while .. assert)を追加することで、関係不変条件に関するステートメントを作成できます。オブジェクトには、ユーザー定義データ型の意味を強制するための制約コンストラクタ(メソッドではありません)があります。

カレイドスコープには3つのバージョンがあり、宣言的なスタイルから命令形へと進化しています。それぞれのバージョンの違いは次のとおりです。[1]

万華鏡'90万華鏡'91万華鏡'93
制約評価怠け者熱心な熱心な
変数ストリームを保持するストリームを保持する命令形
同時制約厳しい厳しい非厳格
構文スモールトークのようなアルゴルのようなアルゴルのような
制約モデル洗練洗練摂動
メソッドディスパッチシングル複数複数
割り当て制約として制約として破壊的

2 つのコード セグメントを比較します。どちらのコード セグメントでも、ユーザーはマウスを使用して、シンプルなグラフィカル温度計内の水銀レベルをドラッグできます。

制約なし:

mouse.button = down の状態で 古い <- mercury.top; mercury.top <- mouse.location.y; 温度 <- 水銀高度 / スケール; display_number(温度); old < mercury.top の場合 delta_grey( 古い、 mercury.top ); elseif old > mercury.top then delta_white( mercury.top, old ); 終了の場合;終了しながら;

制約あり:

常に: temperature = mercury.height / scale;常に: 白い長方形(温度計);常に: 灰色の四角形(水銀);常に: 数値(温度)を表示します。mouse.button = down の状態で mercury.top = マウスの位置 y;終了しながら;

参考文献

  • ロペス、ガス、ビョルン・フリーマン=ベンソン、アラン・ボーニング (1994). 「カレイドスコープ:制約命令型プログラミング言語」.制約プログラミング. シュプリンガー・フェアラーク. pp.  313– 329.
  • マリオット、キム、ピーター・J・スタッキー (1998).制約付きプログラミング入門. MITプレス. ISBN 0-262-13341-5
  1. ^ Lopez, Gus; Freeman-Benson, Bjorn; Borning, Alan (1993). 「Kaleidoscope: A Constraint Imperative Programming Language」(PDF) . constraints.cs.washington.edu . 2023年12月30日閲覧


「https://en.wikipedia.org/w/index.php?title=Kaleidoscope_(programming_language)&oldid=1303148661」より取得