高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

のーみそこねこねProlog語(語呂悪し)

 さて、Prologです。わたしも前基本程度しかさわったことないので、ほとんど分かりません。
ええと、事実と規則をファイルに定義しておいて、コンソールでは質問するというのが、基本的な使い方のようですね。

father(a, b). のようにして、事実を定義(左の事実は、"bさんのお父さんはaさん" という意味)し、?- father(X, a). のようにして問いかけします。この辺は参考サイトに詳しく載っているので、そちらを参考にすると良いでしょう。
 実践には、SWI-Prologというエンジンを使用します(英語のサイトですが、左下のフレームの"Download > Stable release"をクリックすればダウンロードページにいけます。ソースコードも見られますが、Tk/Tclなどいろいろなものが使われているようでちょっと手強そうです)。まあ、拡張子proを関連づけておけば、ダブルクリックだけで動かせます。


 やってみた感じ、他の言語とは全く違うアプローチが多く、結構頭をひねらせる必要があります。とくに再帰処理が絡むとなかなか、手続き・オブジェクト指向プログラミングに慣れた頭を刺激します。ただ、なかなか柔軟に動いてくれます。とくに事実と規則の定義で動かす部分など、なかなかやっていて面白いです。他の言語からこれを使う…と思うとなかなか難しそうですが。
 ともあれ、これを他言語で使えると思うと、なんだか面白いことになりそう。こんな記述を他の言語に交えて使える…と思うとぞくぞくしてしまいますね。
 …と学校の友達に言ったら、呆れられました(^_^;)