Racket では、次の方法で構文を定義できます。
(define-syntax foo
(syntax-rules ()
((_ "abc") 'xyz)))
走ることで
(foo "abc")
xyz を返します。define を使用してこれを実装します。
(define (foo x)
(match x ["abc" 'xyz]))
今回、
(foo "abc")
それでも 'xyz を返します。これらの異なるフォームを使用することの違いは何ですか?