Prologでは述語はヘッドとボディから成ります。ボディはゴールの連言です。述語はこの連言が証明可能であれば真となります。Prologの述語は手続きとも呼ばれます。述語をコンパイルするということは、この述語を定義するサブゴールの定義もコンパイルされるということではありません。
IF/Prologコンパイラは'.pro'ファイルを入力とし、'.pro'ファイルで定義された述語のコンパイルされたコードを含む'.sem'ファイルを生成します。コンパイラは、以下のようにしてオペレーティング・システムレベルから起動することができます。
$ ifsem myfile
あるいは、Prologのセッション中には以下のようにして下さい。
?- compiles(myfile).
compiles/1によって、IF/Prologは新しいサブシェルを起動します。このサブシェルにおいて 'ifsem myfile'が実行されます。コンパイラは、ファイル'myfile.pro'を探し、このファイルに定義された述語のための中間コードを生成します。このコードはmyfile.semのようなファイルにセーブされます。
作業が完了し、サブシェルを終了してシステムが当初のPrologレベルに戻ると、コンパイルされたファイルがロードされます。コンパイラが成功した場合には、コンパイルに要した時間が以下のように表示されます。
?- compiles(myfile). file myfile.pro compiled in 0 secs.
ifsemに"-nonotify"のオプションを付けて、この表示をやめることができます。
デフォルトとして、ifsemとcompiles/1は最適化コードを生成します。もし、何らかの理由で最適化ができない場合は、ifsemが、-debugのオプションと共に起動されます。ifsemについての詳しい説明は、レファレンスマニュアルを見て下さい。
| 冒頭へ |
|