述語write_pl_state_file/1及びread_pl_state_file /1用語の解析、すなわちオペレータの定義、文字変換のPrologフラグに影響を与える情報/状態に接続されているが、だからの一部
ある等あなたの解決策(たぶん)ですが、もっと基本的に動的節定義を保存したいと思っています。恐らくファイルを参照して元に戻すことができます。
述語listing/0はこのようなことを行いますが、ダイナミック句はファイルではなく「コンソール」に表示されます。おそらくthe underlying predicateportray_clause/2を使用して、出力をファイル(ストリーム)にリダイレクトすることができます。
著者ダニエル・ディアスnoted a slight changeあなたは必ず最新バージョンを持ってしたいことがありので、バージョン1.4.0のための最新のリリースノートにportray_clause/2用(出力の最後に改行を追加)読みやすさのために。
を追加しました:
バージョン1.3.2で始まるGNU Prologのは、(1.3.1およびそれ以前のようではなく、単にコンソールに比べて)現在のストリームにリスト/ 0出力を送信してサポートしていることを表示されます。
| ?- assertz(whoami(i)).
| ?- assertz(whoami(me)).
| ?- assertz(whoami(myself)).
動的述語WHOAMI/1ための3つの節(事実)を作成する:ここ
テストケースです。
私は、次のクエリでのファイルmyClauses.plを作成:
| ?- open('myClauses.pl',write,S), set_output(S), listing, close(S).
をストリームSを閉じると、現在の出力がコンソールにリセットされます。
ファイルmyClauses.plには空白行と3つの句が含まれているため、ソースコードは適切な形式で参照されます。しかし、Windowsの下に新たにインストールされたGNU Prolog 1.4.0のconsult/1述語(とFile - > Consult ...メニューに相当)の問題があります。コンパイルはコマンドラインから実行され、ロード/ 1がコンソールで正しく処理できるバイトコードファイルが生成されるため、設定方法には若干の問題があります。バグレポートを送って、私がそれを二乗してしまったら、さらにメモを書きます。私はまだLinux上でそれを試していない。
私は* consult *でこの節をロードできますか? – skayred
保存の例をいくつか教えてもらえますか? – skayred
@skayred:通常のPrologソースファイルを作成します(もちろんコメントはなく、変数名には少しの再構成があります)。上記のスニペットを追加してアイデアを説明しましたが、一般的にファイルのコンサルティングに問題がありました。私はそれが理解できたら、さらにメモを掲示します。 – hardmath