[View] [Edit] [Attachments] [History] [Home] [Changes] [Search] [Help]

Squeak Prolog/V

Squeak Prolog/V
http://minnow.cc.gatech.edu/squeak/1000
SqeuakMap から簡単にインストール出来る Prolog (Prolog/V) です。Squeak から利用しやすい工夫がしてあります。

起動と使い方。


PrologWorkspace open で Prolog 用のワークスペースが開きます。プログラム上で利用する場合は、
LCompiler evaluate: 'Prolog の文'
と言う使い方も出来ます。結果は配列で返って来ます。

Family new :? father(x,y)

普通の Prolog とは違い、規則はクラスに関係付けられています。上の文の Family new :? がクラスの指定で、質問の際にはこのようにクラスを必要とします。規則を新しく定義をするには、Smalltalk のメソッドとして定義します。また、database という機能を使って動的に規則を生成する事も出来ます。
例えば、ジャンケンのルールを Prolog/V で表現すれば以下の感じ(file in 形式で冗長ですが)。
'From Squeak3.6gamma of ''11 September 2003'' [latest update: #5421] on 25 September 2003 at 2:33:29 pm'!
Prolog subclass: #Janken
    instanceVariableNames: ''
    classVariableNames: ''
    poolDictionaries: ''
    category: 'Prolog'!

!Janken methodsFor: 'as yet unclassified' stamp: 'tak 9/25/2003 14:31'!
draw(x, x).! !

!Janken methodsFor: 'as yet unclassified' stamp: 'tak 9/25/2003 14:22'!
lose(x, y) :- win(y, x).! !

!Janken methodsFor: 'as yet unclassified' stamp: 'tak 9/25/2003 14:21'!
win('pa', 'gu').
win('gu', 'choki').
win('choki', 'pa').
! !

これでパーに勝つ手を求めるには下のようにします。
Janken new :? win(x, 'pa')

Link to this Page

propella home