ここでは、対話的プログラミングツール"iptool"をコンサルトします。
以下のような内容のファイル"iptool"を述語edit/1を使って作成して下さい(editor/2を参照して下さい)。ファイルに書き込み、エディタを終了すると、IF/Prologは自動的にファイルをリコンサルトし、インタプリタレベルに戻ります。
?- edit( iptool).
% two built-in predicates are used in this program that % allow users to write interactive programs in IF/Prolog % "read(Input)", "write(Output)". Combined with "asserta" % they form this interactive programming tool.
:- op(100,xfy,reports_to).
iptool :- write('To finish, type in: stop.\n'), write('Type in terms like: X reports_to Y.\n'), repeat, write(:),tab(1), read(Term), interpreter(Term).
interpreter(stop) :- !. interpreter(X reports_to Y) :- !, asserta(X reports_to Y), fail. interpreter(_):- !, write('"X reports_to Y." expected, try again:\n'), fail.
reconsult: file 'iptool' loaded in 1 sec.
yes ?- _
この対話的プログラミングツールをコマンドiptoolで動かし、アサ−トしたい節を入力して下さい。
?- iptool.
To finish, type in : stop. Type in terms like : X reports_to Y. : 'Mr.Friday' reports_to 'Mr.Monday'. :_ . . . : stop.
"stop."を入力すると、iptoolは名前を要求するのを止めます。
述語"listing(reports_to)."は、以下のように"iptool"によってアサ−トされた入力を示します。
?- listing(reports_to). ....