|
|
|
IF Computer
>
IF/Prolog
>
Manuals
>
IF/Prolog V4.1 マニュアル
>
IF/Prolog Interfaces
>
IF/PrologからC言語へのインタフェ−ス
>
バックトラックするProlog述語をC言語で書く
|
バックトラックするProlog述語をC言語で書く
|
MINERVA superseeded IF/Prolog.
Please see
http://www.ifcomputer.co.jp/MINERVA
for details.
We discontinued to sell IF/Prolog Dec 31. 2003.
For current customers, we continue to provide
professional support for IF/Prolog until Dec 31, 2008.
あなたのアプリケ−ションが簡単な場合には、この章は読む必要はありません。
バックトラックする複雑なProlog述語をC言語で書こうとする前に、同じ結果が、今まで述べてきた範囲で書ける簡単な述語と 、組み込まれた制御述語"repeat","!"(カット),"fail"との組み合わせで得られないか検討してみた方が良いでしょう。
|
| read on...
|
-
理論背景 : ボックスモデルとコル−チン
-
バックトラックする複雑なProlog述語を書く前に、その基礎となる理論の概要と、どのようにそれが実現されているかを理解することが必要です。...
-
C言語によるコル−チンの実現
-
-
IF/Prologによってサポートされるコル−チン
-
CPREDは、STATE複合項のサイズを引数として呼び出されます。IF/Prologが初めてC述語のル−チンを呼び出す時(実体を作る時)、このサイズの変数を生成し、その実体が存在する間は保持し続けます。IF/Prologでは、最初にプログラムポインタ=0で関数を呼び出します。各活性化の間(RESUMEs)、直前の返り値が次のプログラムポインタとして記憶されます。もしそれ以上他の解が見つからないと、次のプログラムポインタとして0が返されます。もしepilog(後処理指令)がある場合、IF/Prologは、epilogを実行するためにプログラムポインタ=−1でそのル−チンを再度呼び出します。以下にその概要を示します。...
-
マクロ定義と関数のライブラリ−
-
以下に述べるマクロ定義と関数のライブラリ−によって、容易にかつ統一的にバックトラックする述語をC言語で書けるようになります。これらのマクロ定義の詳細については、付録のcpred.hのリストを参照して下さい。...
-
バックトラックをするプログラム例
-
このプログラム例は、$PROROOT/demos/cの中にあります。新しい述語for_pred/3は、C言語,Pascal,Fortranなどの従来のプログラミング言語で使う”for”文と同様の働きをします。この述語は3つの引数を持ちます。第1引数は、初期整数値、第3引数は最大整数値、第2引数は数列の現在値を与える変数です。その増分は内部で1にセットされ、外部からは変更できません。...
-
バックトラックをし、Epilogを持つプログラム例
-
次の例は、必要でなくなったファイルを閉じる時に、epilogの機能がどのように使われるかを示しています。”readatom”という関数は、第1引数で指定されるファイルをオ−プンし、ファイルの最初の行を第2引数と単一化したアトムとして返します。バックトラックがおきると、第2引数を2,3,4行目と次々に単一化します。述語は、以下のように呼び出されます。(file1の内容は下に示してあります)...
|
|
|