Modern Scheme (およびその子孫である Racket) は、非常に強力な衛生的なマクロ システムを備えています。quote私にquasiquoteは、(非衛生的な)マクロを定義するという彼らの歴史的立場を失ってしまったように思えます(私が誤解していなければ、Common Lisp ではまだ行われているように)。実際には言語レポートでは、quoteデータquasiquote、特にリストを構築する便利な方法としてのみ提示されます。確かに、彼女が退屈に耐えられるなら、それらがなくても大丈夫です。たとえば、 の(quote (+ 1 2))ように書き換えることができ、 のように書き換える(list (quote +) 1 2)こと(quasiquote (+ (unquote (- 2 1)) 2))ができます(list (quote +) (- 2 1) 2)。
ここで、Scheme にシンボルの新しいプリミティブ型を導入するとします。大文字で始まる識別子はシンボルであり、それ以外の場合は変数です。soXは記号 を意味し、上記の例はおよびxのように記述できます。(が記号を表しているとしましょう。)とは冗長であると言えますか? それとも何かが恋しいですか?(list Plus 1 2)(list Plus (- 2 1) 2)Plus+quotequasiquote
編集:
evalいくつかのまれなケースではまだ有用なようです: EVAL in SCHEME明確な質問。