さて、Prologです。わたしも前基本程度しかさわったことないので、ほとんど分かりません。
ええと、事実と規則をファイルに定義しておいて、コンソールでは質問するというのが、基本的な使い方のようですね。
father(a, b).
のようにして、事実を定義(左の事実は、"bさんのお父さんはaさん" という意味)し、?- father(X, a).
のようにして問いかけします。この辺は参考サイトに詳しく載っているので、そちらを参考にすると良いでしょう。
実践には、SWI-Prologというエンジンを使用します(英語のサイトですが、左下のフレームの"Download > Stable release"をクリックすればダウンロードページにいけます。ソースコードも見られますが、Tk/Tclなどいろいろなものが使われているようでちょっと手強そうです)。まあ、拡張子proを関連づけておけば、ダブルクリックだけで動かせます。
やってみた感じ、他の言語とは全く違うアプローチが多く、結構頭をひねらせる必要があります。とくに再帰処理が絡むとなかなか、手続き・オブジェクト指向プログラミングに慣れた頭を刺激します。ただ、なかなか柔軟に動いてくれます。とくに事実と規則の定義で動かす部分など、なかなかやっていて面白いです。他の言語からこれを使う…と思うとなかなか難しそうですが。
ともあれ、これを他言語で使えると思うと、なんだか面白いことになりそう。こんな記述を他の言語に交えて使える…と思うとぞくぞくしてしまいますね。
…と学校の友達に言ったら、呆れられました(^_^;)