自分のためのTips、誰かの為にもなるといいな・・・

Prolog基礎


Rev.2を表示中。最新版はこちら

文法

And と Or

ANDはコンマ,ORはセミコロン.簡単な例.
hoge(X,Y) :- X > Y, write('ok!'); write('ng!').

同じ内容のORを,以下のように書ける.
hoge(X,Y) :- X > Y, write('ok').
hoge(X,Y) :- write('ng').

入れ子にしたい場合,括弧を使えば良い.
hoge(X,Y,Z) :-
  X < Y, (
    Y < Z, write('xyz');
    X < Z, write('xzy');
    write('zxy')
  );
    X < Z, write('yxz');
    Y < Z, write('yzx');
    write('zyx').
if文のように使うことができる.

If と Else

次のように定義されている.
If -> Then; _Else :- If, !, Then.
If -> _Then; Else :- !, Else.
If -> Then :- If, !, Then.
上のAnd と Or による条件分岐より分かりやすく表現できる.使用例.
X > 10 -> write('Large'); write('small').

true と fail

trueは常に成功,fail は常に失敗.
?- true; write('Hello').

Yes
?- fail; write('Hello').
Hello

Yes

repeat

repeatは常に成功.さらに,バックトラックの無限の分岐点となる.
次の例は,C(67)が入力されるまで,入力を読み続ける.
?- repeat, get(67)
|: A
|: B
|: C

Yes

否定

例えば,上の条件分岐の条件を反転してみる
\+ X =< 10 -> write('Large'); write('small').
not(X =< 10) -> write('Large'); write('small').
notは,古い形で \+ を使うのが推奨されているみたい.

演算子

割り算

整数

X is Y // Z
実数

X is Y / Z

最終更新 2007/10/04 00:24:43 - yohei
(2007/10/03 23:46:22 作成)


検索

最近気になる言葉
LINQ
atコマンド
最近更新したページ
2015/7/16
2008/9/15
2008/1/30
2007/12/14
2007/11/14
2007/10/25
2007/9/23
2007/5/30