3

次の 2 つの Racket コードを考えてみましょう。

;version A
(define-syntax (b stx) 
  (syntax-case stx () [(X u) #'(display  (syntax->datum #'(X u v)))]))
(b 1)

;version B
(define-for-syntax (g stx) 
  (syntax-case stx () [(X u) #'(display  (syntax->datum #'(X u v)))]))
(define-syntax (b s) (g s))
(b 1)

実験的に、両方のプログラムが を返し(b 1 v)ます。質問: 「バージョン B」は有効なラケットですか? もしそうなら、それは「バージョンA」と完全に同等ですか?

4

1 に答える 1

4

はい、お気付きのように、これらはどちらも問題なく、まったく同じことを行います。

于 2013-06-06T15:55:10.933 に答える