宣言的プログラミングの性質を表すサンプルプログラムを紹介します。「宣言的」プログラミングとは、結果を「どのようにして(how)」求めるかを記述するのでなく、結果が「何であるか(what)」を記述することでプログラムを作成していく方法です。最大値を求めるプログラムでは、通常の手続き型(命令型)のプログラム言語で実装する場合、値の集合をすべてチェックするようなループを使ってそれぞれの値を比較し、すべてのチェックが終り、最終的に最大値が得られるというようなプログラムを書くでしょう。ここで、最大値の言葉の定義に立ち返ってみましょう。最大値とは何らかの値の集合の中で一番大きい値です。「ある値の集合のすべての値よりも大きいかまたは等しい値」のことまたは、これをさらに言い換えて「ある値の集合の中に、その値よりも大きな値が存在しない値」のこととなります。宣言的プログラミングでは、最大値を求めるプログラムの場合、上記のような最大値の「定義」をそのままプログラムに落とし込みます。具体的なプログラムを見てみましょう。以下は総務課のメンバー中で最も身長の高い人を選び出すプログラムです。総務課の個々のメンバーを表すクラスを定義します。name;}}さらに、メインプログラムは、以下のとおりです。ruleBase;}}ここまでは、あまり説明の必要はないと思いますが念のため、mainのプログラムでworkingMemory.assertObjectというところで、メンバーのファクトをワーキングメモリーに登録していきます。最後に肝心なルールのソースです。"+memMaxHeight.getName()+"で身長"+memMaxHeight.getHeight()+"cm");endwhen~thenの~の部分を見てください。when節の2行目は、「maxheightよりも高い身長を持つ総務の人はいない。」ということを表しています。1行目はそれのみであれば、総務のメンバー全員にマッチしますが、2行目と組み合わせることで、総務のメンバーで自分の身長よりも高い身長を持つメンバーはいないということを表すことになります。優で身長170cmという結果が表示されます。ワーキングメモリに登録する総務課のメンバーを追加したり替えてみていろいろとやってみてください。