GnuEmacsでPrologを使う
 prolog.elが新しいもの用ページ(ver. 1.19以降)
 
 
 %% これは、筆者が
 技術評論社 刊 ソフトウェアデザイン誌
「つこてなんぼのFreeBSD」
 1998年11月
 に掲載した原稿をもとにしたものです %%
 
 
 2009/FEB/22更新
 2007/FEB/12更新
  
Prolog処理系を動かして、右も左もわからない時は、
「
 Prologを使う(動作確認 程度のProlog入門)」
を見てください。
 
 
 
 Gnu EmacsとPrologを一緒に使う
 
 
 Prologは、対話的に使用しますが、そのトップレベルは一般的に貧弱です。
対話的に使用する言語は、Gnu Emacsから使うのが常道です。
 
Prologもemacs(mule)から起動すると非常に便利です。
 
  
 0)prolog.elについて
 
 prolog.el中に、
(defvar prolog-mode-version "1.9"
  "Prolog mode version number")
というバージョンを明記する部分が無ければ、古い prolog.elです。
 古いものの場合は、
古い prolog.el用ページを見てください。
 
 
 ちなみに、GNU Emacs 21.2.1とか, 
 Windowsで有名な Meadowに付属の prolog.elは、古いものです。
 
 以下では、新しい prolog.el 用の説明をします。
  
 1) .emacs設定
 
 emacsに標準のprolog.elは、そもそも元富士通研究所の梅田さんが書かれたものなの
ですが、C-PrologとQuintus Prolog用のもので、今のPrologにはLisp変数の初期値
が不適当です。
 そこで、.emacsなどに以下のような記述を行います。
処理系ごとに、異なる設定が必要です。
 --- FreeBSD版 SWI-Prolog
(GNU Emacs 21.3.1 / prolog.elの prolog-mode-version が "1.9")
 
; for SWI-Prolog
(setq prolog-system 'swi)
(setq auto-mode-alist
      (append '(("\\.pl" . prolog-mode))
       auto-mode-alist))
(setq prolog-program-name "/usr/local/bin/pl")
 
--- end
 
 
 と記述します。
 
 prolog.elに、各処理系ごとの動作が書かれています。
 よって、prolog-system という変数に適切なシステム名をセットするだけで、
 簡単に色んな機能を利用できます。
 
  
 2)使い方
 
 そしてemacsを起動したのち、M-x run-prologとして、prologを起動します。
 その後、M-x 2 で窓を2つに分割し、片方でソースを編集すると非常に便利です。
 
 
  
 
 
 そして、ソースを編集している窓から、簡単なキー操作で、Prolog処理系へソー
スを読み込ませることができます。
 その方法は、
 
 
 最近のEmacsの時
 (GNU Emacs 21.3.1 などで、 prolog.elの prolog-mode-version が "1.9")
 
  -  送り込みたい節の頭でマーキング(C-space)を行う
  
-  送り込みたい部分の最後にカーソルを移動
 
-  C-C,C-Rを押下
 
 すると、指定したリージョンが自動的にconsultされます。
 これで、もう、Prologマシンは不用になりましたね。:-)
 
 emacsのprologモードでは、インデントを自動的につけてくれます。
 Prologのコメントは「%」で開始した行です。
 emacsのprologモードの場合、%%がパラグラフの開始で、%は通常のコメントです。
 
 
 3) prolog.el 1.9版のキーマップ
 
 共通
 
  - C-c,? 
- 述語(predicate)のヘルプ
   
- C-c,/ 
- ヘルプ(アプロポス(入力した単語を含む節のヘルプを表示))
   
- C-c,C-d 
- デバッグ On
   
- C-c,C-t 
- トレース On
   
- C-c,r 
- Prolog起動
   
編集
  - M-a 
- 節(clause)の始まりへ移動
   
- M-e 
- 節(clause)の終わりへ移動
   
- C-M-a 
- 述語(predicate)定義の始まりへ移動
   
- C-M-e 
- 述語(predicate)定義の終わりへ移動
   
- M-C-c 
- 節(clause)にマーク
   
- M-C-h 
- 述語(predicate)にマーク
   
- M-C-n 
- リストを進む
   
- M-C-p
- リストを戻る
   
- C-c,C-n
- 述語(predicate)のテンプレートを挿入
   
- C-c,C-s
- 述語(predicate)のスペックを挿入
    
- M-r
- 次の節(clause)を挿入
    
- C-c,C-v,a
- 変数をアノニマス('_')に置き換える
    
- C-c,C-v,C-s
- 述語(predicate)のスペックを見る
    
- C-m (通常は[Enter])
- 改行して、インデント
    
- C-c,C-p
-  述語(predicate)をコンサルトする
     
- C-c,C-r
-  リージョンをコンサルトする
     
- C-c,C-b
-  バッファをコンサルトする
     
- C-c,C-f
-  ファイルをコンサルトする
     
- C-c,C-c,p
- 述語(predicate)をコンパイルする
     
- C-c,C-c,r
-  リージョンをコンパイルする
     
- C-c,C-c,b
-  バッファをコンパイルする
     
- C-c,C-c,f
-  ファイルをコンパイルする
     
 4) 参考にならない、僕のページ
 
たけおかのPrologページ 目次
 
  Prologの入門文書に飽きた人に
 
 
 
 Prologを使う(動作確認 程度のProlog入門)
 
 実際にProlog処理系を使ったときの、あれこれ 
Prologで記述した、StarTrek(1976年頃流行した古いゲーム)
たけおか(竹岡尚三)のホームページ
--- EOF