(対象OS:Windows8、Windows8.1 ※Windows7は試していない)
M.Hiroiさんのお気楽 Prolog プログラミング入門のサンプルを試している中で、筆者が述語名のスペルミスをした時に、SWI-Prologが推測してメッセージを出してくれたので紹介。
手順は以下の通り。
まず、SWI-Prologは以下の手順でインストール。
powershell
# PowerShellを管理者にて実行しておく
# chocolateyのインストール
iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))
# SWI-Prologのインストール
choco install swi-prolog
次に、以下の内容をファイルに保存し、ダブルクリックで起動。
family.pl
/* 男性 */
male(taro).
male(ichiro).
male(jiro).
male(saburo).
/* 女性 */
female(hanako).
female(tomoko).
female(sachiko).
female(youko).
/* 父親 */
father_of(taro, ichiro).
father_of(taro, jiro).
father_of(taro, tomoko).
father_of(ichiro, saburo).
father_of(ichiro, youko).
/* 母親 */
mother_of(hanako, ichiro).
mother_of(hanako, jiro).
mother_of(hanako, tomoko).
mother_of(sachiko, saburo).
mother_of(sachiko, youko).
parents_of(X,Y):- father_of(X,Y).
parents_of(X,Y):- mother_of(X,Y).
son_of(X,Y) :- parents_of(Y,X),male(X).
次に、質問を入力したのだが、ここで筆者がスペルミス。
("son_of"を"san_of"と間違えた)
1 ?- san_of(X,hanako).
すると、
Correct to : "son_of(X,hanako)"?
Please answer 'y' or 'n'?
「son_of(X,hanako)に訂正しますか?y(yes)かn(no)か答えて下さい」と怒られた。もちろん答えはyes。
「san_ofなんてありませんよ。son_ofならありますけどね」だそうで。嫌味な奴だ(笑)
それはともかく、スペルミスのような初歩的なミスに起因する不具合は、ハマる時はかなりハマるので、こういう推測機能が標準で入っているのは嬉しい。