Common Lisp でリーダーマクロの興味深い利用例の紹介を見た。
プログラミング言語 Scheme は LISP 系言語といえども Common Lisp でいうところのリーダーマクロに相当するものはない。 しかし、いくつかの短縮記法は提供されていて、読み込みの段階で対応する名前に変換される。 R5RS や R7RS では以下のよっつがそうだ。
| 短縮記法 | 対応する名前 |
| ' | quote |
| ` | quasiquote |
| , | unquote |
| ,@ | unquote-splicing |
それに加えて R6RS では以下の短縮記法も用意されている。
| 短縮記法 | 対応する名前 |
| #' | syntax |
| #` | quasisyntax |
| #, | unsyntax |
| #,@ | unsyntax-splicing |
これらは単なる短縮記法であるので、たとえば quote の意味を置換えてしまえば ' の意味も変えられる。 新しい記法を追加することは出来なくても、既存の記法の意味を変えることは出来るのだ。
私は以前に quasisyntax を置換える試みをしたことがある。
使いどころを慎重に考えないと混乱の元になりそうだが、コードゴルフくらいには使えるかもしれない。
Document ID: 2882acdda16167cb2246cea8dd2b1ed0
0 件のコメント:
コメントを投稿