[Gauche-devel-jp] 初心者質問:マクロ構文とlambdaの引数について

Back to archive index

Makoto Satoh makot****@yahoo*****
2003年 1月 16日 (木) 13:31:01 JST


佐藤です。

WiLiKi の macro.scm で、次のようなマクロ作成手続きがあります。

 (define-syntax define-reader-macro 
   (syntax-rules ()
     ((_ (name . args) . body)
      (set! *reader-macro-alist*
            (let ((sname (string-append "$$" (symbol->string 'name))))
              (acons sname
                     (lambda p
                       (if (arity-matches? p 'args)
                           (receive args (apply values p) . body)
                           (unrecognized sname)))
                     *reader-macro-alist*))))
     ))

ここで、3行目の _ は、マクロ名、つまりここでは define-reader-macro を
参照していると考えて良いでしょうか?

また、let 文の中では、グローバル変数 *reader-macro-alist* に、sname と
lambda 式の戻り値を acons していますが、lambda 式の引数 p には、何が
どこから来るのでしょうか?

初心者質問で申し訳ないですが、教えていただけると幸いです。
あるいは、Scheme について初心者が質問できる他の場所があれば、教えて
いただけますか?

--
Makoto SATOH  <makot****@yahoo*****>
__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!  http://bb.yahoo.co.jp/




Gauche-devel-jp メーリングリストの案内
Back to archive index