May 24, 2007
Perlスクリプトの拡張子は、plx派です。
というわけで、Prologを勉強中。授業で使うとか使わないとかっていうから。もちろん拡張子はpl。
自分が生まれた年に出版された本を読んでます。実は1年半前ぐらいに一度読んだはずなんだけど、例によってさっぱり覚えてない(汗
とりあえず1章の概要っぽいとこまで読んで、自然数を表現したくなったのでやってみた。
zero. succ(zero). succ(succ(X)) :- succ(X). int(zero). int(succ(X)) :- int(X). equal(zero,zero). equal(succ(X),succ(Y)) :- equal(X,Y). plus_(X, zero, Y) :- equal(X,Y). plus_(X, succ(Y), Z) :- plus_(A, Y, Z), equal(X, succ(A)).
これで
?- plus_(X, succ(zero), succ(zero)).
とかやると1+1が計算できる(はず…)。
この本の3章あたりの例題にインスパイアされております。うん、わけわからんね。論理型の本質が分かってないので、関数型っぽく書くとこうなったというお話しでした。
たぶん、ダメダメのコードなのでとりあえず晒してみる。

