タグ

ブックマーク / tociyuki.hatenablog.jp (1)

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

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

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