では, KL1プログラムの構成を見てみよう (図1.1参照).
まず, 最初に:- module main.と書かれているが, これは
モジュール宣言と呼ばれるものである (詳細はのちほど説明する). まずは,
KL1プログラムの最初は必ず
:- module main.と書いておけば良い, と理解しておけば良い.
次に, main :- ... と書かれているが, これは, 述語main
を定義していることを表す.
klicコマンドでコンパイルしてできたコードは,
まず, この述語mainを実行する決まりになっている. したがって, KLIC
システムで利用するためのKL1プログラムには必ずこの述語mainが
存在する必要がある (必ずしもファイルの先頭で定義されている必要はない).
「本当に行ないたいこと (今回であれば, nrev([1,2,3,4,5,6],X)という
述語)」はこの述語mainから呼び出されるようにしておけば良い.
また, io:outstream([print(X),nl]) とあるのは,
項Xを標準出力に印字するための述語呼出しであり,
あらかじめシステムで用意されていものである.
述語io:outstream(Stream)は,
Streamに流れて来るメッセージに従い, 標準出力に
印字を行う.
今回は, 以下の2種類のメッセージを利用している.
print/1
引数の項全体が具体化するまで待ち,
印字する.
nl/0
標準出力に改行コードを送る.
これで, 簡単なKL1プログラムを書いて, klicコマンドでコンパイルし,
実行できるようになった.