GnuEmacsでPrologを使う
prolog.elが古いもの用ページ

Windowsのmeadowはこのページ

たけおか@AXE (ex.山本ナヲミ)

%% これは、筆者が
技術評論社 刊 ソフトウェアデザイン誌
「つこてなんぼのFreeBSD」
1998年11月
に掲載した原稿をもとにしたものです %%


2009/FEB/22更新
2007/FEB/12更新

Prolog処理系を動かして、右も左もわからない時は、 「 Prologを使う(動作確認 程度のProlog入門)」 を見てください。



Gnu EmacsとPrologを一緒に使う


Prologは、対話的に使用しますが、そのトップレベルは一般的に貧弱です。
対話的に使用する言語は、Gnu Emacsから使うのが常道です。

Prologもemacs(mule, Meadow )から起動すると非常に便利です。


0) prolog.elを判断する

emacsに標準のprolog.elは、そもそもは元富士通研究所の梅田さんが書かれたものであり、 Gnu Emacsと共に多く配布されています。
ですが、現在は、新しいprolog.elも使用されています。
/lisp/progmodes/prolog.el の内容を見て、

(defvar prolog-mode-version "1.9"
  "Prolog mode version number")
 
というバージョンを明記する部分があれば、新しいものです。

新しいものの場合は、 新しい prolog.el用ページを見てください。

また、新しいprolog.el(1.12)を、 ここに置いておきます
新しい prolog.elの入れ方を書いておきます。 新しい prolog.elの方が、絶対に便利です。

ちなみに、GNU Emacs 21.2.1とか,
Windowsで有名な Meadowに付属の prolog.elは、古いものです。

FreeBSDなどで標準になっているGNU Emacs 21.3.1などの prolog.el は、 新しいものです。


以下では、古い prolog.el 用の説明を行います。
1) .emacs設定

梅田さんが書かれたものは、かなり古く、 C-PrologとQuintus Prolog用のもので、今のPrologにはLisp変数の初期値が不適当です。
そこで、.emacsなどに以下のような記述を行います。
処理系ごとに、異なる設定が必要です。


--- Windows版 SWI-Prologを Meawdowで使用
(Meadowの古いprolog.el)

; for SWI-Prolog
(setq auto-mode-alist
      (append '(("\\.pl" . prolog-mode))
       auto-mode-alist))
(setq prolog-program-name "C:/Progra~1/pl/bin/plcon")
(setq prolog-consult-string "[user].\n")
 
--- end


--- MacOS X版 SWI-Prolog
(古いprolog.el)

; for SWI-Prolog
(setq auto-mode-alist
      (append '(("\\.pl" . prolog-mode))
       auto-mode-alist))
(setq prolog-program-name "/usr/local/bin/swipl")
(setq prolog-consult-string "[user].\n")
 
--- end


--- UNIX版 SB-Prolog
(古いprolog.el)

; for SB-Prolog
(setq prolog-consult-string "consult(user).\n")
(setq prolog-eof-string nil)
 
--- end

と記述します。



2)使い方

そしてemacsを起動したのち、M-x run-prologとして、prologを起動します。
その後、M-x 2 で窓を2つに分割し、片方でソースを編集すると非常に便利です。



そして、ソースを編集している窓から、簡単なキー操作で、Prolog処理系へソー スを読み込ませることができます。
その方法は、


古いEmacsの時
  1. 送り込みたい節の頭でマーキング(C-space)を行う
  2. 送り込みたい部分の最後にカーソルを移動
  3. M-C-x (ESC,C-x)を押下
すると、指定したリージョンが自動的にconsultされます。
これで、もう、Prologマシンは不用になりましたね。:-)

emacsのprologモードでは、インデントを自動的につけてくれます。
Prologのコメントは「%」で開始した行です。
emacsのprologモードの場合、%%がパラグラフの開始で、%は通常のコメントです。



3) 古いprolog.elには、ほかには、もう大した機能はありません。


4) おまけ、prolog.elを新しいprolog.elに入れ替える方法

i)
prolog.elは、/usr/local/share/emacs/lisp/progmodes/prolog.el あたりにあるでしょう。
古いprolog.elと、prolog.elcを消去します。(別なディレクトリに移したり、リネームするのでも良し)

ii)
ver.1.19以降の prolog.elをそのディレクトリにコピーします。

iii)
prolog.elをコンパイルします。
emacsで、M-x byte-compile-file とすると、コンパイルしたいファイルを尋ねてきます、
そこで、prolog.elを指定すると、すぐにコンパイルされてprolog.elcができます。

iv)
emacsを再起動して、新しいprolog.el (elc)を読むようにします。
以上。

新しい prolog.elになった場合は、
新しい prolog.el用ページを見てください。


5) 参考にならない、僕のページ

たけおかのPrologページ 目次

Prologの入門文書に飽きた人に

Prologを使う(動作確認 程度のProlog入門)

実際にProlog処理系を使ったときの、あれこれ

Prologで記述した、StarTrek(1976年頃流行した古いゲーム)

たけおか(竹岡尚三)のホームページ
--- EOF