一般的に、モジュールのボディには、モジュールの機能の実装に必要な任意の述語定義を含めることができます。モジュールが他のモジュールを参照するときの方法に影響を与える、ボディ内でだけ現われることができるような指令もいくつかあります。これらがどのように働くのかを理解するためには、アトムの参照がどうのようにモジュールに割り当てられるのかを考慮する必要があります。...
Move to
Next Prev
Up Top
See also
モジュールヘッド
モジュールボディ
IF Computer > IF/Prolog > Manuals > IF/Prolog V4.1 マニュアル > ユーザーズ・ガイド > モジュールの使用 > モジュールの定義 > モジュールボディ

モジュールボディ

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.

一般的に、モジュールのボディには、モジュールの機能の実装に必要な任意の述語定義を含めることができます。モジュールが他のモジュールを参照するときの方法に影響を与える、ボディ内でだけ現われることができるような指令もいくつかあります。これらがどのように働くのかを理解するためには、アトムの参照がどうのようにモジュールに割り当てられるのかを考慮する必要があります。

もし、モジュールがある関数子を述語として定義しているならば、この関数子に対するすべての参照は、現在のモジュール名によって修飾されているかのように、自動的にローカルとして考えられます。もちろん、もしそうしたいなら、commonや他のモジュール名によって修飾することもでき、その場合はこれが優先されます。その他のすべての関数子に対する参照は、commonで修飾されているかのように、大域的名前空間を参照しているものとされます。これも、特定のモジュール名あるいは現在のモジュールを意味するselfという特別な名前で修飾することができます。

デフォルトの名前付けルールが不便である2つのケースのためにそれぞれ指令があります。モジュールの実装が、他のモジュールで定義された述語を利用することがあります。これは、モジュールボディに、以下の指令を含むことによって可能になります。

?- import(foo2).

これにより、モジュールfoo2からエキスポートされるすべての述語が、現在のモジュールで利用でき、修飾せずに参照することができます(commonを参照するのと同様のルールです)。これの別の形として、他の述語のサブセットをインポートするためのものがあります。

?- import(foo2,[bar/1, bar/2]).

デフォルトの名前付けのもう一つの例外は、モジュールがローカルな「データ」を使っている場合です。つまり、ここでのローカルな「データ」とは、述語ではないがモジュールに対してローカルで外部からアクセスできない関数子です。

?- hidden([Local_bar/4]).

上の指令は、local_bar/4への参照を、モジュール全体を通してselfで修飾されているかのように、ローカルなものに強制します。

もちろん、オペレータ指令は、モジュールヘッドだけではなく、モジュールボディにあらわれても構いません。この場合、オペレータの定義はエキスポートされず、モジュールのボディの構文解析のためだけに使われます。

モジュールボディは、

?- predicate([bar/1, bar/2]).

のようにして、関数子を述語として明示的に定義をすることも可能です。

これにはいくつかの効果があります。第1に、このようにして指定した関数子は、上で述べたようなモジュールにおける名前の決定の際、ローカルな述語の名前であると考えることができます。 第2に、述語の節がない場合でも、述語はもはや「未定義」の状態ではありません。ですから、節がない述語が呼び出された場合に生じる例外処理は起こらず、呼び出しが単に失敗するだけです。第3に、コンパイラは述語を動的なものとして扱うので、assertやretractでの修正が可能です。これら効果を持つので、指令predicateは、修正可能なデータベースとして使われるであろうローカルな述語を導入するために使用します。

read on...
IF/Prolog by Siemens
Language
English
Japanese
German
Server
USA
Japan
Site Access
Local Index
Local Contents
Site Contents
Site Index
Printer Friendly
For imode
For PDA
Search
document: http://www.ifcomputer.co.jp/IFProlog/Manuals/v4.1/user_guide/module/define/body/home_en.html
published 2008/7/7 update 1994/7/26 (c) 1996-2006 IF Computer Japan
IF Computer 5-28-2 Sendagi, Bunkyo-ku Tel +81-3-5814-3352 info@ifcomputer.com
Customer Support Tokyo 113-0022 Japan   http://www.ifcomputer.com
scroll to top managed with ubiCMS