参考
インストール
sudo apt install -y swi-prolog
起動
swipl --quiet
命令
命令 | 意味 |
---|---|
命令,命令. | 命令を,で続ける。他の言語の ; のようなもの |
read(Term) | 標準入力 を Term に格納 |
write('hello'). | echo 'hello' |
char_code(生, X). | 生 の文字コードを出力 |
halt. |
終了 |
. | コマンドの終了を表す様子 |
ctrl-D | 抜ける |
:- | 関数定義 |
; | 次の結果を表示 |
ファイルの読み込み
fly.swi
fly(X) :- airplane(X).
airplane(jet_plane).
airplane(helicopter).
$ swipl -f fly.swi
?- fly(jet_plane).
true.
?- fly(taro).
false.
;を入力すると次の結果を表示する
?- fly(Y).
Y = jet_plane ;
Y = helicopter.
関数の定義
未定義の場合
$ swipl
?- square(2, Y).
ERROR: toplevel: Undefined procedure: square/2 (DWIM could not correct goal)
a.swi
square(X, Y) :- Y is X * X.
呼び出せる
$ swipl -f a.swi
?- square(2, Y).
Y = 4.
(参考までに)rubyで書く場合は以下
def square(x)
return x * x
end
y = square(2)
p y
数値の比較の注意
随分馴染みがない書き方ですね。。
リスト
?- [spring, summer, autumn, winter] = [A, B, C, D].
A = spring,
B = summer,
C = autumn,
D = winter.