なるほどと思ったprologのプログラムをメモがわりに記載しておく。
引用元は以下で、文字コードをEUCにする必要がある。(prologでネットを漁っていると、よくEUCで書かれていて、文字コードのメタ情報が入っていないサイトにぶつかる)
http://bach.istc.kobe-u.ac.jp/prolog/intro/list.html
% 翻訳器 replace([], []). replace([X|L], [X1|L1]) :- rule(X, X1), replace(L, L1). % データ rule(i, '私'). rule(you, 'あなた'). rule(have, '持つ'). rule(love, '愛する'). rule(a, '一つの'). rule(pen, 'ペン'). rule(book, '本').
実行してみる。
?- replace([i,have,a,book], L). L = ['私','持つ','一つの','本'] ? ?- replace([i,love,you], L). L = ['私','愛する','あなた'] ?
変数Lで、リストを受け取る。最初の言葉に置き換えをして、残りに自分を再帰的に呼び出している。