短縮記法の活用

Common Lisp でのリーダーマクロの興味深い利用例の紹介を見た。

#:g1: リーダーマクロでシンボルの略記をする

プログラミング言語 SchemeLISP 系言語といえども Common Lisp でいうところのリーダーマクロに相当するものはない。 しかし、いくつかの短縮記法は提供されていて、読み込みの段階で対応する名前に変換される。 R5RS や R7RS では以下のよっつがそうだ。

短縮記法 対応する名前
' quote
` quasiquote
, unquote
,@ unquote-splicing

それに加えて R6RS では以下の短縮記法も用意されている。

短縮記法 対応する名前
#' syntax
#` quasisyntax
#, unsyntax
#,@ unsyntax-splicing

これらは単なる短縮記法であるので、たとえば quote の意味を置換えてしまえば ' の意味も変えられる。 新しい記法を追加することは出来なくても、既存の記法の意味を変えることは出来るのだ。

私は以前に quasisyntax を置換える試みをしたことがある。

文字列補間 - 主題のない日記

使いどころを慎重に考えないと混乱の元になりそうだが、コードゴルフくらいには使えるかもしれない。

Document ID: 2882acdda16167cb2246cea8dd2b1ed0