<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>prolog / Drkcore</title><link>http://blog.kzfmix.com/entry/prolog</link><description>Programming, Music, Snowboarding</description><atom:link href="http://blog.kzfmix.com/rss/" rel="self"></atom:link><language>ja</language><lastBuildDate>Thu, 29 Jan 2009 20:20:51 +0900</lastBuildDate><item><title>AI::Prolog</title><link>http://blog.kzfmix.com/entry/1233226132</link><description>&lt;p&gt;perlの実装で&lt;a href="http://search.cpan.org/perldoc?AI::Prolog"&gt;AI::Prolog&lt;/a&gt;というのがあるが、インストールするとaiprologというコマンドがついてくる。&lt;/p&gt;

&lt;p&gt;階乗を計算してみる。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;fact(0, 1).
fact(X, Sum) :-
    X &amp;gt; 0, X1 is X - 1, fact(X1, Sum1), Sum is X * Sum1.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;aiprologを起動&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ aiprolog fact.swi 

Welcome to AI::Prolog v 0.740
Copyright (c) 2005-2006, Curtis "Ovid" Poe.
AI::Prolog comes with ABSOLUTELY NO WARRANTY.  This library is free software;
you can redistribute it and/or modify it under the same terms as Perl itself.

Type 'help.' for for a list of built-ins or 'help("$builtin").' for help on a specific built-in.

?-fact(10,X). 

fact(10, 3628800) 

Yes
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;prologをいじってると宣言的ってのが「あーこういうことなのね」ってのがわかって楽しい。On LispでCommon Lispで実装するPrologとか読んである（継続とパターンマッチング）と内部でこういうことしてんのかなとか推測できるし。&lt;/p&gt;

&lt;p&gt;&lt;div class="awsxom"&gt;
&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4274066371/ref=nosim/kaerutyuuihou-22"&gt;
&lt;img src="http://ecx.images-amazon.com/images/I/41Vx%2BOomN3L._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
&lt;strong&gt;On Lisp&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
ポール グレアム,野田 開 &lt;br /&gt;
オーム社 / ￥ 3,990 ()&lt;br /&gt;
通常24時間以内に発送&lt;br /&gt;
&lt;br clear="all" /&gt;
&lt;/div&gt;&lt;/p&gt;

&lt;p&gt;あとで&lt;a href="http://blog.kzfmix.com/entry/1195390517"&gt;HOPの9章&lt;/a&gt;の宣言的プログラミングのとこも読み返そう。Prologを知ってると面白く読めるのかも。&lt;/p&gt;

&lt;p&gt;&lt;div class="awsxom"&gt;
&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/1558607013/ref=nosim/kaerutyuuihou-22"&gt;
&lt;img src="http://ecx.images-amazon.com/images/I/41D4RKA43XL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
&lt;strong&gt;Higher-order Perl: A Guide To Program Transformation&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
Mark Jason Dominus &lt;br /&gt;
Morgan Kaufmann Pub / ￥ 6,155 ()&lt;br /&gt;
通常24時間以内に発送&lt;br /&gt;
&lt;br clear="all" /&gt;
&lt;/div&gt;&lt;/p&gt;
</description><pubDate>Thu, 29 Jan 2009 20:20:51 +0900</pubDate><category>perl</category><category>prolog</category></item><item><title>macbookにswi-prologをインストール</title><link>http://blog.kzfmix.com/entry/1233144656</link><description>&lt;p&gt;初Prolog&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo port install swi-prolog
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;linuxだとplなんだけどmacだとswiplというコマンド。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;parent(kzfm,yuki).
parent(uko,yuki).
parent(ako,uko).
parent(yum,kzfm).
parent(chiyo,yum).
parent(kzfm,hana).
parent(uko,hana).
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;上のファイルをtest.swiという名前で保存しておいて、&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;swipl -f test.swi
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;で起動&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;?- parent(A,yuki).
A = kzfm ;
A = uko . 

?- parent(A,B),parent(B,yuki).
A = ako,
B = uko ;
A = yum,
B = kzfm ;
false.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;parentのparentつまり祖父母だ。もちろん再帰もできる。On Lispの言葉を借りるなら&lt;strong&gt;Prologは規則を追加したデータベース&lt;/strong&gt;だ。&lt;/p&gt;

&lt;p&gt;ということは、ミニ言語としてperlとかに組み込んであっても良さそうなものだと思って探してみたら、ズバリな記事を見つけた。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.perl.com/pub/a/2005/12/15/perl_prolog.html"&gt;Logic Programming with Perl and Prolog&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;あとで読む。&lt;/p&gt;

&lt;p&gt;今のところ入門的な内容しかやってないのでアレなんだけど、ファクトが固いというか、True,Falseからしかルールを導いてないので、もうちょっと確率的なものを扱いたい。8割くらい正しいのでTrueとかそんな感じの緩いルール。&lt;/p&gt;

&lt;p&gt;これも気になるが、なか見検索できないので躊躇している。&lt;/p&gt;

&lt;p&gt;&lt;div class="awsxom"&gt;
&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4777514021/ref=nosim/kaerutyuuihou-22"&gt;
&lt;img src="http://ecx.images-amazon.com/images/I/51sbpGAijaL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
&lt;strong&gt;Prologで学ぶAIプログラミング―「論理プログラミング」「Prolog」の入門から「人工知能」の基礎まで (I・O BOOKS)&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
赤間 世紀 &lt;br /&gt;
工学社 / ￥ 2,415 ()&lt;br /&gt;
通常2～4週間以内に発送&lt;br /&gt;
&lt;br clear="all" /&gt;
&lt;/div&gt;&lt;/p&gt;

&lt;h4&gt;追記&lt;/h4&gt;

&lt;p&gt;&lt;a href="http://www.kohgakusha.co.jp/books/detail/978-4-7775-1402-1"&gt;これ&lt;/a&gt;見たら、この本よりも、Prolog Programming for Artificial Intelligenceを買うべきな気がしてきた。&lt;/p&gt;

&lt;p&gt;&lt;div class="awsxom"&gt;
&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/0201403757/ref=nosim/kaerutyuuihou-22"&gt;
&lt;img src="http://ecx.images-amazon.com/images/I/419EYBHD16L._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
&lt;strong&gt;Prolog Programming for Artificial Intelligence (International Computer Science Series)&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
Ivan Bratko &lt;br /&gt;
Longman Group United Kingdom / ￥ 7,091 ()&lt;br /&gt;
通常11～13日以内に発送&lt;br /&gt;
&lt;br clear="all" /&gt;
&lt;/div&gt;&lt;/p&gt;
</description><pubDate>Wed, 28 Jan 2009 21:47:52 +0900</pubDate><category>macbook</category><category>prolog</category></item></channel></rss>
