タグ

define-syntaxに関するh6nのブックマーク (3)

  • define-macroをR6RSで - .mjtの日記復帰計画

    skySchemeは自前のexpanderで伝統的なマクロを実装していたが、冷静に考えるとそのためだけにexpanderを持つのは無駄なので可能な限りR6RS側のmacroを使うことにする。(moshのcompilerではdefine-macroを使っているが、moshの中で実装を見つけられなかった。) R6RSのmacroはsyntax-caseと呼ばれていて、伝統的なマクロとはだいぶ趣が異なる。syntax-caseのリファレンス実装はSRFI-93で提供される。 syntax-caseで書かれたdefine-macroを探してくると : https://webmail.iro.umontreal.ca/pipermail/gambit-list/2007-March/001195.html - Marc Feeley(Gambitの作者)による実装 以下のコードはこれを元にしている。

    define-macroをR6RSで - .mjtの日記復帰計画
  • Scheme 入門 15. 構文の定義

    15. 構文の定義 (マクロ) 1. 初めに 今回は Lisp 語族に特徴的機能である、自前の構文を定義する方法(マクロ)について 説明します。マクロが定義できるようになると、プログラムがさらに簡潔に 書けるようになります。 マクロとは式の変換です。 式が評価される前に、または、コンパイル時に式が変換されます。 そして、変換後の式が初めからソースコードに書いてあったかのように処理が行われます。 Common Lisp のマクロ定義はかなり複雑ですが、R6RS に準拠した Scheme では syntax-rules という形式によって比較的簡単に定義できます。 syntax-rules を使うと変数補足などのわずらわしいことを気にしないで、 ”この式をこういう式に変換しろ”ということを直接的に書くことができます。 ただし、syntax-rules で記述できないマクロを書くのは Commo

  • scheme-faq-macros

    Scheme Frequently Asked Questions The material on this page is licensed under the terms of the GNU Free Documentation License. See scheme-faq-license for more information about this. general | language | macros | misc | programming | standards Macros What are "hygienic" macros? The term "hygienic" has been used in connection with macros since the mid 1980s, if not earlier. Broadly speaking, hygien

  • 1