The Scheme Programming Language のマクロ部分を読んでいるときに、 を使用して構文拡張を定義しようとしている場合はdefine-syntax
、 を使用pat ...
してパターンにゼロ以上の式を指定する必要があると書かれています。1つ以上の式を意味する...
ゼロ以上の式を使用しないのはなぜですか?pat ...
また、著者がand
次のように定義する場合:
(define-syntax and
(syntax-rules ()
[(_) #t]
[(_ e) e]
[(_ e1 e2 e3 ...)
(if e1 (and e2 e3 ...) #f)]))
次のように書いてみませんか。
(define-syntax and
(syntax-rules ()
[(_) #t]
[(_ e) e]
[(_ e1 e2 ...)
(if e1 (and e2 ...) #f)]))
この定義をいくつかのケースでテストしましたが、問題は見つかりませんでした。