K-Prolog Compiler Version 6.0 
:- module foomodule. foo(x):- foobar(x). foobar(bar).を読み込んだとき、述語foo/1 と foobar/1 は foomodule に属し、 他のモジュールから見えなくなります。述語foo/1 を他のモジュー ルから見えるようにするためには、
:-public foo(_).を、module宣言の後に書いておきます。 これで foo は他のモジュールから実行できます。public宣言されている述語を publicな述語といいます。
module(M)は、Mが変数ならば、現在のモジュール名を問い合わせ
てMと単一化します。Mがアトムならば副作用として現在のモジュール名
をMに変更します。
モジュールは、2047個まで指定できます。最初はモジュール public になっています。
モジュールpublic は特殊なモジュールで、このモジュールに属する述
語はすべてpublic宣言されているとみなされます。したがって、すべて
のプログラミングを publicモジュール内で行えば、モジュール機能のな
い処理系と同じことになります。組込み述語はモジュールpublic にあり
ます。
publicでない述語の名前が、
他のモジュールの publicな述語の名前と
衝突した場合、モジュール内の述語の方だけがそのモジュールでは見えます。
したがって組込み述語と同名の述語を public 以外のモジュールの中に
につくることができます。
clause、 listing や current_predicateなど、 述語を扱う組込み述語は、 現在のモジュールに属する述語だけを参照します。 したがって、モジュール宣言されたプログラムを開発するときには、その モジュールに入っておく方が便利な場合があります。
11: ?- module foobar. yes 12: ?- module M. M = foobar 13: ?- listing. foo : - foobar. foobar. yes