SWI-Prolog導入
まずはお試し、ということで。
簡単な物を書いてみた。
拡張子は(.pro)で保存できるように指定しました。
programLanguage(X) :- functional(X). programLanguage(Y) :- procedural(Y). programLanguage(Z) :- logical(Z). functional(haskell). functional(erlang). procedural(java). procedural(c). procedural(python). logical(prolog).
実行結果
1 ?- logical(prolog). true. 2 ?- procedural(c). true. 3 ?- procedural(java). true. 4 ?- procedural(haskell). false. 5 ?- functional(erlang). true.
更にもう一つ。
writeTo(i,Person).
実行結果
1 ?- Person = mother. Person = mother. 2 ?- writeTo(i,Person). true. 3 ?- writeTo(i,mother). true. 4 ?- writeTo(i,father). true.
面白いですけど、インタプリタ上でしか動かないのが悲しい。
そして階乗。
ホームページ移転のお知らせ - Yahoo!ジオシティーズ
こちらのホームページのソースコードをうつさせてもらいました。
kaijou(1,0). kaijou(Ans,N) :- N > 0 , N1 is N-1 , kaijou(Ans1,N1) , Ans is N*Ans1.
これでちゃんと解が出るのですが、なぜそうなるのかまだよく追えない.....