Homeに戻る  一覧に戻る 

How to build gprolog-1.2.6


gprolog-1.2.16をbuildする[2002.10.20]

Prolog(Programming in logic)は、Horn節(clause)のUnificationとResolusionに基づいた論理型プログランミング言語である。 制御には、cut(!),バックトラックが使用できる。

Prologは、学生時代に興味を持った言語の1つである。 休刊した雑誌bitに掲載されたBASICで記述されたPrologインタプリタ(文字列関数を使ってUnificationを実装していた)を動かしたこともあったが、当時の8bitパソコンのBASICインタプリタ上では実行速度は遅く、ほとんど実用にはならなかった。

ここでは、GNU Prolog 1.2.16をNetBSD-1.6/i386上でbuildする。 手順は以下の通りである。
  1. gprolog-1.2.16.tar.gzを展開する。
    $ tar zxf ./install/gprolog-1.2.16.tar.gz
    
  2. INSTALLを良く読む。
    $ cd gprolog-1.2.16
    $ more INSTALL
    
  3. configureする。
    $ cd src
    $ ./configure --prefix=/usr/gnu --with-c-flgas="-m486 -O3" --enable-linedit
    
  4. Ma2Asm/ix86_any.cを編集する。
    < #if (defined(M_ix86_cygwin) || defined(M_ix86_bsd)) && !defined(__FreeBSD__) && !defined(__NetBSD__)
    ---
    > #if (defined(M_ix86_cygwin) || defined(M_ix86_bsd)) && !defined(__FreeBSD__)
    
  5. makeする。
    $ make
    
  6. make installする。
    $ su
    # make install
    # exit
    
  7. make cleanする。
    $ make clean
    
リストを結合するプログラムappend/3(組み込み述語にあるので、名前をapにする)を作成し、実行してみると、以下のようになる。
bash-2.05a$ gprolog
GNU Prolog 1.2.16
By Daniel Diaz
Copyright (C) 1999-2002 Daniel Diaz
| ?- [user].
compiling user for byte code...
ap([],X,X).
ap([X|Y],Z,[X|U]):-ap(Y,Z,U).
% ここで、ctrl-Dを入力すると、プログラム入力を完了し、コンパイルする。
user compiled, 3 lines read - 448 bytes written, 44885 ms

(13 ms) yes
| ?- ap([a,b,c],[d,e],X).

X = [a,b,c,d,e]

yes
| ?- ap(X,Y,[a,b,c]).

X = []
Y = [a,b,c] ? ;

X = [a]
Y = [b,c] ? ;

X = [a,b]
Y = [c] ? ;

X = [a,b,c]
Y = [] ? ;

(21 ms) no
| ?- halt.
bash-2.05a$ 
現在の32bitパソコン上では、10数年間に渡るハードウェアおよびソフトウェアの進歩により、Prolog処理系も実用的になったのではないかと思う。

参考文献



Last Update: 2005.06.12
H.Nakao

Homeに戻る[Homeに戻る]  一覧に戻る[一覧2002に戻る]