タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

prologとprogrammingに関するwushiのブックマーク (2)

  • Prolog インタープリタにあるリネーム・マクロの祖先 - Tociyuki::Diary

    懐古趣味の続きです。 Kohlbecker が 1986 年に提案した健全なマクロ (Hygienic macro) の実装の仕方を見たとき、 「あれ、これ、どっかで見たことあるなぁ」と感じたものです。 当時、 何を頭に思い浮かべていたかというと、 Prolog の単一化処理の際におこなう変数のリネームのやりかたでした。 Prolog では一種の参照渡しをおこないつつ同じ節を再帰的に単一化するため、 独特のやっかいな問題が生じます。 単純に実装するには唯一の環境フレームを使う代わりに節をマクロ扱いして、 単一化する前の実行時に節内の変数に識別番号を追加するなりしてリネームし、新しい節へと丸ごとコピー生成する方法があります。 このやりかたを採用していた実装は 1980 年代にいくつかあり、 Prolog-KABA もその一つだったはずです。 Scheme での Prolog 風の処理系実装例

    Prolog インタープリタにあるリネーム・マクロの祖先 - Tociyuki::Diary
  • Prolog Meta programming

    Prologの入門文書に飽きた人に たけおか@AXE (竹岡尚三) Update: 2007/DEC/08 Update: 2007/AUG/18 初出: 2007/MAR/10 なんだか、Webの世界には、日語では、純粋な論理型言語としてのProlog入門の 文書しかなく。 Prologは、実用言語(を目指しているはず)なので、ピュアな論理の話だけでは、 いけないと、思い… で、こういう雑文にて、恥をさらす。 1. 高階による後悔 実用プログラムが、あんまりに高階手続きを使っていると、それはそれで、困り そうなものなのだが… でも、やはり、高階な呼び出しは、必要だ。 aho(X,Z) :- A =.. [plus,1,X,Z], call(A),print(Z). という述語を定義し、 実行とその結果は次のとおり。 ?- aho(4,Z). 5 Z = 5 「call/1」 は、 引数

  • 1